使用 glob python 读取具有特定扩展名的目录中的所有文件
reading all the files in a directory with specific extension using glob python
我有一个包含更多子目录的目录,每个子目录都有具有特定扩展名的文件。我能够使用 glob 函数获取所有文件的名称:
for name in glob.glob('*/*[a-b]*'):
print(os.path.basename(name))
打印我在所有子目录中的文件名:
PF44_aa
PF52_aa
PF95_aa
PF38_aa
PF45_aa
PF63_aa
PF68_aa
PF39_aa
但是,如果我将这些文件名作为参数传递以打开文件并读取内容:
for name in glob.glob('*/*[a-b]*'):
filename=os.path.basename(name)
with open('%s' %filename) as fn:
content = fn.readlines()
我收到以下错误:
File "<ipython-input-194-147f38fc2684>", line 1, in <module>
with open('%s' %filename) as fn:
FileNotFoundError: [Errno 2] No such file or directory: 'PF44_aa'
我也试过直接输入文件名而不是 %s
:
for name in glob.glob('*/*[a-b]*'):
filename=os.path.basename(name)
with open(filename) as fn:
content = fn.readlines()
但还是出现同样的错误:
File "<ipython-input-193-fb125b5aa813>", line 1, in <module>
with open(filename) as fn:
FileNotFoundError: [Errno 2] No such file or directory: 'PF44_aa'
我做错了什么,我该如何解决?
替代方法...
首先导入:
import shutil
import os
然后将目录分配给列表:
file_list = []
file_list = os.listdir('C:/filepath')
现在区分文件:
files = []
files = [x for x in file_list if "_aa" in x]
现在您可以使用您的方法打开和读取文件列表中的文件了。
然而:
filepath + filename
with open(filepath + filename) as fn:
content = fn.readlines()
目前您只是试图用文件名打开文件,您需要包含完整的文件路径...
结果:
"C:/filepath/PF44_aa"
您必须使用文件的完整路径才能打开它,不能只使用文件名,除非它与您的 python 文件位于同一目录中。所以你必须对你的脚本做一些小的改变才能让它工作。
for name in glob.glob('*/*[a-b]*'):
with open(name) as fn:
content = fn.readlines()
文件名被名称替换。
这里,"name" 是您文件的完整路径。
我有一个包含更多子目录的目录,每个子目录都有具有特定扩展名的文件。我能够使用 glob 函数获取所有文件的名称:
for name in glob.glob('*/*[a-b]*'):
print(os.path.basename(name))
打印我在所有子目录中的文件名:
PF44_aa
PF52_aa
PF95_aa
PF38_aa
PF45_aa
PF63_aa
PF68_aa
PF39_aa
但是,如果我将这些文件名作为参数传递以打开文件并读取内容:
for name in glob.glob('*/*[a-b]*'):
filename=os.path.basename(name)
with open('%s' %filename) as fn:
content = fn.readlines()
我收到以下错误:
File "<ipython-input-194-147f38fc2684>", line 1, in <module>
with open('%s' %filename) as fn:
FileNotFoundError: [Errno 2] No such file or directory: 'PF44_aa'
我也试过直接输入文件名而不是 %s
:
for name in glob.glob('*/*[a-b]*'):
filename=os.path.basename(name)
with open(filename) as fn:
content = fn.readlines()
但还是出现同样的错误:
File "<ipython-input-193-fb125b5aa813>", line 1, in <module>
with open(filename) as fn:
FileNotFoundError: [Errno 2] No such file or directory: 'PF44_aa'
我做错了什么,我该如何解决?
替代方法...
首先导入:
import shutil
import os
然后将目录分配给列表:
file_list = []
file_list = os.listdir('C:/filepath')
现在区分文件:
files = []
files = [x for x in file_list if "_aa" in x]
现在您可以使用您的方法打开和读取文件列表中的文件了。
然而:
filepath + filename
with open(filepath + filename) as fn:
content = fn.readlines()
目前您只是试图用文件名打开文件,您需要包含完整的文件路径...
结果:
"C:/filepath/PF44_aa"
您必须使用文件的完整路径才能打开它,不能只使用文件名,除非它与您的 python 文件位于同一目录中。所以你必须对你的脚本做一些小的改变才能让它工作。
for name in glob.glob('*/*[a-b]*'):
with open(name) as fn:
content = fn.readlines()
文件名被名称替换。
这里,"name" 是您文件的完整路径。