Python迭代多个文件

2024-06-17 19:20:45 发布

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

我有一系列文件,格式如下:

file_1991.xlsx
file_1992.xlsx
# there are some gaps in the file numbering sequence
file_1995.xlsx
file_1996.xlsx
file_1997.xlsx

对于每个文件,我希望执行以下操作:

^{pr2}$

对数据执行一些操作,并将其另存为另一个文件:

output_1995 = pd.ExcelWriter('output_1995.xlsx')
data_1995.to_excel(output_1995,'Sheet1')

与其对每个文件都执行这些操作,我如何遍历多个文件并在多个文件中重复相同的操作?换句话说,我希望遍历所有的文件(它们大多在名称中遵循一个数字序列,但是序列中有一些空白)。在

提前谢谢你的帮助。在


Tags: 文件theinoutput格式序列somexlsx
3条回答

您可以使用os.listdirglob模块列出目录中的所有文件。在

与操作系统列表目录,您可以使用fnmatch来过滤这样的文件(也可以使用regex)

import fnmatch
import os

for file in os.listdir('my_directory'):
    if fnmatch.fnmatch(file, '*.xlsx'):
        pd.read_excel(open(file, 'rb'), sheetname = 'Sheet1')
        """ Do your thing to file """

或者使用glob module(这是fnmatch+listdir的快捷方式),您可以这样做(或者使用regex):

^{pr2}$

您应该使用Python的glob模块:https://docs.python.org/3/library/glob.html

例如:

import glob
for path in glob.iglob(directory + "file_*.xlsx"):
    pd.read_excel(path)
    # ...

我推荐glob。在

执行glob.glob('file_*')返回一个列表,您可以在该列表上迭代并执行工作。在

执行glob.iglob('file_*')将返回一个生成器对象,该对象是迭代器。在

第一个会给你一些东西,比如:

['file_1991.xlsx','file_1992.xlsx','file_1995.xlsx','file_1996.xlsx']

相关问题 更多 >