您如何处理文件夹中的所有文件?

时间:2019-06-18 20:20:16

标签: python pandas directory-structure listdir

我想在目录中的所有文件上运行我的代码。该代码可以在单个文件上正常工作,但是我尝试对多个文件进行迭代的过程告诉我

FileNotFoundError:[错误2]没有这样的文件或目录:'file.xlsx'

directory = r"C:/Users/name/Desktop/folder/2018"
arrivals_aggregated = pd.DataFrame()

print(os.listdir(directory))
for filename in os.listdir(smt_directory):

    print('current file is ' + filename)
    x = pd.ExcelFile(filename)
    symbols = x_symbols(x)
    arv = x.parse(sheet_name='Arrivals', skiprows=5, usecols=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])
    arrivals = x_arrivals(arv, x)

arrivals_aggregated.append(arrivals)

我希望它可以遍历目录中的所有文件,处理结果并将结果汇​​总到一个大的数据帧到达集合中。相反,它在x = pd.ExcelFile(filename)处停止,表示找不到该文件,即使该文件存在,甚至在我包含

时也可以打印

打印(“当前文件为'+文件名)

该文件夹中的第一个文件失败,而未处理任何代码。

1 个答案:

答案 0 :(得分:1)

是否可行取决于您在哪里运行脚本。如果您运行脚本的目录中没有filename,那么您将得到一个FileNotFoundError

我会这样做:

x = pd.ExcelFile(os.path.sep.join([directory, filename]))

这将确保您将真实的文件位置传递给pd.ExcelFile