Python 循环多个文件夹中的常见文件
如何在多个文件夹中找到具有相同文件名的文件,然后执行相同的操作Python 循环多个文件夹中的常见文件,python,python-3.x,pandas,Python,Python 3.x,Pandas,如何在多个文件夹中找到具有相同文件名的文件,然后执行相同的操作 def findCommonDeep(path1, path2): return set.intersection(*(set(os.path.relpath(os.path.join(root, file), path) for root, _, files in os.walk(path) for file in files) for path in (path1, path2))) 在标记熊猫之后,让我们使用pand
def findCommonDeep(path1, path2):
return set.intersection(*(set(os.path.relpath(os.path.join(root, file), path) for root, _, files in os.walk(path) for file in files) for path in (path1, path2)))
在标记熊猫之后,让我们使用
pandas
和pathlib
返回具有类似名称的文件字典:
from pathlib import Path
import pandas as pd
def return_similair_files(start_dir : str) -> dict:
all_files = Path(start_dir).rglob('*.csv')
df = pd.DataFrame({'files' : all_files})
df['name'] = df['files'].apply(lambda x : x.name) #pathlib method.
return df.groupby('name')['files'].agg(list).to_dict()
这将返回一个文件字典,如下所示:
{'file_1.csv' : [list_of_paths]}
然后,您可以根据需要对它们进行操作。
findCommonDeep
使用单个参数文件名调用,但使用关于路径的两个参数定义。是的,我感到困惑。只需找到所有文件夹之间的公共文件即可扫描您定义的公共文件是什么意思?例如,所有文件夹中的“file1.csv”
必须递归地将它们全部全局化:glob.glob('**/file1.csv')谢谢!我是在循环中运行函数还是在循环中运行函数?确切位置?@asd no函数替换循环,然后您可以非常简单地创建数据帧,方法是调用dfs={name:pd.read_csv(f)作为名称,file in dictionary.items()作为f in files}
或类似的命令:)谢谢。如果该函数有一个参数,start\u dir
,那么其他文件夹文件路径去哪里?对不起,误会了。如果start\u dir
表示:'mydocuments\Analysis\
,我想这是行不通的,因为该文件夹还有其他不相关的文件CSVs@asd很抱歉错过了此评论,您误解了rglob
它拖网了整个目录结构。您可以使用许多pathlib
方法来过滤路径。您必须用更具体的用例更新您的问题,因为我不理解您的问题抱歉误解。如何实际使用该函数。运行函数后,是否运行返回类似文件(“我的文档\分析”)
?我在哪里过滤路径?
{'file_1.csv' : [list_of_paths]}