在 python 中使用 glob 获取文件列表
getting file list using glob in python
我在 mydir.I 中有一个 csv 文件列表,想获取文件名列表。但是,如下使用 glob 会返回一个空列表。
import glob
mydir = "C:\Data"
file_list = glob(mydir + "*.csv")
print('file_list {}'.format(file_list))
尝试 fnmatch
:
import os
from fnmatch import fnmatch
mydir = "C:/Data"
file_list = [file for file in os.listdir(mydir) if fnmatch(file, '*.csv')]
print('file_list {}'.format(file_list))
此外,使用正则表达式:
import os
import re
mydir = "C:/Data"
file_list = [file for file in os.listdir(mydir) if re.search('.*\.png', file)]
print('file_list {}'.format(file_list))
顺便说一句,glob
is a module, you should use glob.glob()
像这样:
from glob import glob
mydir = "C:/Data"
file_list = glob(mydir + "/*.csv")
print('file_list {}'.format(file_list))
看来您只需要包含斜线即可在正确的目录中搜索。
import glob
mydir = "C:\Data"
file_list = glob.glob(mydir + "/*.csv") # Include slash or it will search in the wrong directory!!
print('file_list {}'.format(file_list))
您在文件名和目录之间缺少反斜杠。但是你不能用一个反斜杠结束一个字符串,因为它会认为你试图转义结束引号。您可以将它放在对 glob 的调用中。 (请注意,您需要将两个字符串都设为原始字符串,如果您的目录以 "n" 或 "t" 开头,这是一种很好的做法,在这种情况下,它们被解释为空格字符。):
import glob
mydir = r"C:\Data"
file_list = glob.glob(mydir + r"\*.csv")
print('file_list {}'.format(file_list))
您可能还想尝试使用 pylint 检查常见错误或警告。它会针对未转义的目录名称发出警告。
更新:
事实上,我只是将其简化为:
import glob
file_list = glob.glob(r"C:\Data\*.csv")
print('file_list {}'.format(file_list))
我在 mydir.I 中有一个 csv 文件列表,想获取文件名列表。但是,如下使用 glob 会返回一个空列表。
import glob
mydir = "C:\Data"
file_list = glob(mydir + "*.csv")
print('file_list {}'.format(file_list))
尝试 fnmatch
:
import os
from fnmatch import fnmatch
mydir = "C:/Data"
file_list = [file for file in os.listdir(mydir) if fnmatch(file, '*.csv')]
print('file_list {}'.format(file_list))
此外,使用正则表达式:
import os
import re
mydir = "C:/Data"
file_list = [file for file in os.listdir(mydir) if re.search('.*\.png', file)]
print('file_list {}'.format(file_list))
顺便说一句,glob
is a module, you should use glob.glob()
像这样:
from glob import glob
mydir = "C:/Data"
file_list = glob(mydir + "/*.csv")
print('file_list {}'.format(file_list))
看来您只需要包含斜线即可在正确的目录中搜索。
import glob
mydir = "C:\Data"
file_list = glob.glob(mydir + "/*.csv") # Include slash or it will search in the wrong directory!!
print('file_list {}'.format(file_list))
您在文件名和目录之间缺少反斜杠。但是你不能用一个反斜杠结束一个字符串,因为它会认为你试图转义结束引号。您可以将它放在对 glob 的调用中。 (请注意,您需要将两个字符串都设为原始字符串,如果您的目录以 "n" 或 "t" 开头,这是一种很好的做法,在这种情况下,它们被解释为空格字符。):
import glob
mydir = r"C:\Data"
file_list = glob.glob(mydir + r"\*.csv")
print('file_list {}'.format(file_list))
您可能还想尝试使用 pylint 检查常见错误或警告。它会针对未转义的目录名称发出警告。
更新:
事实上,我只是将其简化为:
import glob
file_list = glob.glob(r"C:\Data\*.csv")
print('file_list {}'.format(file_list))