在python中使用glob获取文件列表

2024-04-27 20:35:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我在mydir中有一个csv文件列表。我想得到文件名列表。但是,使用glob如下所示将返回一个空列表。

import glob

mydir = "C:\Data"

file_list = glob(mydir + "*.csv")
print('file_list {}'.format(file_list))

Tags: 文件csvimportformat列表data文件名glob
3条回答

文件名和目录之间缺少反斜杠。但是不能用一个反斜杠结束字符串,因为它会认为您在试图转义结束引号。你可以把它放在打给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))

看起来您只需要包含斜杠就可以在正确的目录中进行搜索。

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

尝试^{}

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

另外,使用RegEx:

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

顺便说一下,^{}是一个模块,您应该像这样使用^{}

from glob import glob

mydir = "C:/Data"

file_list = glob(mydir + "/*.csv")
print('file_list {}'.format(file_list))

相关问题 更多 >