我有几个格式相同但值不同的文件。 在 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/