python - 使用 Glob 将文件夹内部分名称的文件名获取到列表

标签 python glob

我有几个格式相同但值不同的文件。 在 StackOverflow 用户的帮助下,我运行了代码,但现在我正在尝试优化它,我需要一些帮助才能做到这一点。

这是完整的代码:

import pandas as pd

# filenames
excel_names = ["file-JAN_2019.xlsx", "example-JAN_2019.xlsx", "stuff-JAN_2019.xlsx"]

# read them in
excels = [pd.ExcelFile(name) for name in excel_names]

# turn them into dataframes
frames = [x.parse(x.sheet_names[0], header=None,index_col=None) for x in 
excels]
#frames = [df.iloc[20:, :] for df in frames]
frames_2 = [df.iloc[21:, :] for df in frames[1:]]
#And combine them separately
combined = pd.concat([frames[0], *frames_2])

# concatenate them..
#combined = pd.concat(frames)
combined = combined[~combined[4].isin(['-'])]
combined.dropna(subset=[4], inplace=True)

# write it out
combined.to_excel("c.xlsx", header=False, index=False)

我尝试使用的代码如下:

from glob import glob

excel_names = glob.glob('*JAN_2019-jan.xlsx')

files = []
for names in (excel_names):
   files.extend(names)

print(files)

此时我收到以下错误: 回溯(最近一次调用最后一次): 文件“finaltwek.py”,第 4 行,位于 excel_names = glob.glob('*JAN_2019-jan.xlsx') AttributeError:“function”对象没有属性“glob”

但是当我调整代码时,我也运行了代码,但它找到了文件夹中的所有文件,而我只需要最终具有相同名称的文件,包括扩展名

我试图通过使其查找以相同方式结尾且位于同一文件夹中的所有文件来使代码更加动态,但由于某种原因,我无法使其工作,有人可以帮忙吗? 谢谢

最佳答案

glob.glob("*JAN_2019-jan.xlsx") 将在 Python 解释器所在的目录中进行搜索。
您可以使用 os.path.join(...) 和 os.path.dirname(__file__) 轻松构建文件路径来指向脚本的目录:

import os
import glob

excel_names = glob.glob(os.path.join(os.path.dirname(__file__), '*JAN_2019-jan.xlsx'))
print execel_names

为我打印:

['/tmp/ex-JAN_2019-jan.xlsx']

关于python - 使用 Glob 将文件夹内部分名称的文件名获取到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444096/

相关文章:

Python Selenium WebDriver 拖放

python - 根据 csv 文件名命名数据框?

linux - 为什么在 cp 命令中使用 globbing 时出现 "omitting directory"错误?

python - Pygame 障碍不会生成多次

python - 使用 loadtxt 读取带有字符串和 float 的文件

python - Python-声明中的L错误

python - 仅获取 numpy 数组中每一行的特定列

windows - 文件名通配 Windows 与 Unix

python - 将打印语句写入文本文件

perl - 如何测试 Perl 中是否存在与模式匹配的文件名?