在 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))