在迭代过程中打开文件的动态路径 - Python
Dynamic Path for Opening Files in an iterative process - Python
正在寻找一些有用的提示。我正在尝试通读文件夹及其子文件夹中存在的多个 .txt 文件,然后使用正则表达式从中提取 phone 数字。我可以在 os.walk 上使用 for 循环来做到这一点。但是,当我尝试在嵌套循环中读取单个文件时,它会不断抛出一个又一个错误。基本上我到目前为止了解到的是它可能没有打开文件,因为它没有在同一目录中找到它并且路径需要是动态的。我试过使用 {folder\subfolder\f} 但没有用,也试过 os.path.join 但无济于事。非常感谢任何帮助。
'''
import re
import os
lst = []
for folder, subfolder, files in os.walk(top):
for f in files:
lst.append(re.findall(r'\d{3}-\d{3}-\d{4}', open(f, 'r+', encoding='utf-8', errors='ignore').read()))
return lst
'''
产生的错误:
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-54-6932d4b1e2e1> in <module>
4 for folder, subfolder, files in os.walk(top):
5 for f in files:
----> 6 lst.append(re.findall(r'\d{3}-\d{3}-\d{4}', open(f, 'r+', encoding='utf-8', errors='ignore').read()))
7 return lst
FileNotFoundError: [Errno 2] No such file or directory: 'Instructions.txt'
您不应在路径中加入 subfolder
,因为这是您正在浏览的实际文件夹中的子文件夹列表。
您应该加入 folder
和来自 files
的文件名:
open(os.path.join(folder, f), 'r+', encoding='utf-8', errors='ignore').read()))
正在寻找一些有用的提示。我正在尝试通读文件夹及其子文件夹中存在的多个 .txt 文件,然后使用正则表达式从中提取 phone 数字。我可以在 os.walk 上使用 for 循环来做到这一点。但是,当我尝试在嵌套循环中读取单个文件时,它会不断抛出一个又一个错误。基本上我到目前为止了解到的是它可能没有打开文件,因为它没有在同一目录中找到它并且路径需要是动态的。我试过使用 {folder\subfolder\f} 但没有用,也试过 os.path.join 但无济于事。非常感谢任何帮助。
'''
import re
import os
lst = []
for folder, subfolder, files in os.walk(top):
for f in files:
lst.append(re.findall(r'\d{3}-\d{3}-\d{4}', open(f, 'r+', encoding='utf-8', errors='ignore').read()))
return lst
'''
产生的错误:
---------------------------------------------------------------------------
FileNotFoundError Traceback (most recent call last)
<ipython-input-54-6932d4b1e2e1> in <module>
4 for folder, subfolder, files in os.walk(top):
5 for f in files:
----> 6 lst.append(re.findall(r'\d{3}-\d{3}-\d{4}', open(f, 'r+', encoding='utf-8', errors='ignore').read()))
7 return lst
FileNotFoundError: [Errno 2] No such file or directory: 'Instructions.txt'
您不应在路径中加入 subfolder
,因为这是您正在浏览的实际文件夹中的子文件夹列表。
您应该加入 folder
和来自 files
的文件名:
open(os.path.join(folder, f), 'r+', encoding='utf-8', errors='ignore').read()))