【发布时间】:2020-01-30 03:36:59
【问题描述】:
这是我的问题:假设我想创建一个文件同步功能,它遍历两个相似目录的所有文件夹和子文件夹,并检测这两个目录的所有公共文件夹/子文件夹。我通过将 os.walk 模块与 filecmp 模块结合起来进行了尝试。到目前为止,我的代码如下所示:
import filecmp
import os
src=r"C:\Users\j2the\Documents\Test3"
dst=r"C:\Users\j2the\Documents\Test4"
comparison = filecmp.dircmp(dst, src)
for dirpath,dirnames,filenames in os.walk(src):
for folders in dirnames:
if folders in comparison.common_dirs:
print(folders)
src_folder=os.path.abspath(os.path.join(dirpath,folders))
dst_folder=os.path.abspath(os.path.join(dst,folders))
folder_comparison = filecmp.dircmp(dst_folder, src_folder)
for dirpath1,dirnames1,filenames1 in os.walk(src_folder):
for subfolders in dirnames1:
if subfolders in folder_comparison.common_dirs:
print(subfolders)
src_subfolder=os.path.abspath(os.path.join(dirpath1,subfolders))
dst_subfodler=os.path.abspath(os.path.join(dst_folder,subfolders))
subfolder_comparison=filecmp.dircmp(dst_subfodler,src_subfolder)
这是一个非常简单的代码。但是,此代码仅适用于具有最大值的目录。 2 个子文件夹。如果我想分析具有更多子文件夹的目录,我将不得不在我的代码中添加大量嵌套循环。当然还有另一种方法可以做到这一点,对吧?我正在考虑创建一个 while 循环,不断遍历每个子文件夹并比较它们直到没有子文件夹,但我根本不知道该怎么做。任何帮助/输入将不胜感激!
【问题讨论】:
-
os.walk不是为每个子文件夹生成一个元组吗?
标签: python for-loop os.walk file-comparison