繁体   English   中英

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

[英]Using Glob to get filenames with partial name inside folder to a list

我有几个格式相同但值不同的文件。 在 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' object没有属性“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']

如果你想使用 glob.glob() 那么你应该打电话

import glob
#then use 
file_names = glob.glob('*.xlxs')

在您的代码中,您正在从 glob 文件导入 glob 函数。 在这种情况下,您不能使用 glob.glob()。 对于您的代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM