使用glob获取文件名

4

我正在使用pandas读取多个tsd文件并将它们合并为一个大的数据框。我使用glob来遍历我的目录和子目录中的所有文件。每个单独的数据框都有一个唯一的键。现在,我想创建一个参考表格,在其中存储每个键对应的文件名。但由于我不太理解glob,我不知道如何仅获取文件名。

p = Path('myPath')
data = []
reference_table = {}
number_of_files = 0

for tsd_files in p.glob('**/*.tsd'):
        data.append(pd.read_csv(str(tsd_files), delim_whitespace=True, header=None))
        number_of_files = number_of_files + 1

whole_data = pd.concat(data, keys= list(range(number_of_files)))

使用os.path.basename函数获取完整路径名中的文件名。 - cdarke
2个回答

7

只需使用 os.path.basename() 从路径中获取文件名即可。

p = Path('myPath')
data = []
reference_table = {}
number_of_files = 0
file_names = []

for tsd_files in p.glob('**/*.tsd'):
    data.append(pd.read_csv(str(tsd_files), delim_whitespace=True, header=None))
    number_of_files = number_of_files + 1
    file_names.append(os.path.basename(tsd_files))

whole_data = pd.concat(data, keys= list(range(number_of_files)))

谢谢。我知道肯定有像那样简单的方法,但我找不到它。谢谢 :) - JuMang

3

让我们以符合Pythonic风格的方式使用Path

from pathlib import Path

p = Path('dir')
filenames = [i.stem for i in p.glob('**/*.ext')]

p.glob('**/*.ext') 返回一个生成器对象,需要迭代才能将其值取出,可以使用 [i for i in ..] 来完成这个操作。

i.stem 表示带有扩展名的文件名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接