首页 > 解决方案 > 循环遍历目录下的excel文件路径并将它们传递给Python中的数据操作函数

问题描述

我需要/Users/x/Documents/test/通过DataCheck函数 from来查看目录下的 excel 文件data_check.py,所以我可以对很多 excel 文件进行数据操作data_check.py,代码结构如下:

import pandas as pd

def DataCheck(filePath):
    df = pd.read_excel(filePath)
    try:
        df = df.dropna(subset=['building', 'floor', 'room'], how = 'all')
        ...
        ...
        ...
        df.to_excel(writer, 'Sheet1', index = False)
    
if __name__ == '__main__':
    status = True
    while status:
        rawPath = input(r"")
        filePath = rawPath.strip('\"')
        if filePath.strip() == "":
            status = False
        DataCheck(filePath)

为了循环目录下的所有 excel 文件的路径,我使用:

import os

directory = '/Users/x/Documents/test/'
for filename in os.listdir(directory):
    if filename.endswith(".xlsx") or filename.endswith(".xls"):
        print(os.path.join(directory, filename))
    else:
        pass

出去:

/Users/x/Documents/test/test 3.xlsx
/Users/x/Documents/test/test 2.xlsx
/Users/x/Documents/test/test 4.xlsx
/Users/x/Documents/test/test.xlsx

但我不知道如何将上面的代码组合在一起,将 excel 文件的路径传递给DataCheck(filePath).

感谢您提前提供的帮助。

标签: python-3.xpandaswindowsoperating-systemlistdir

解决方案


使用名称而不是打印它们来调用函数:

import os

directory = '/Users/x/Documents/test/'
for filename in os.listdir(directory):
    if filename.endswith(".xlsx") or filename.endswith(".xls"):
        fullname = os.path.join(directory, filename)
        DataCheck(fullname)

推荐阅读