【发布时间】:2018-07-18 06:49:51
【问题描述】:
我在 Linux 中有两个目录,其中有两个文件。我需要比较这两个目录并打印出更改的文件。
folder1:
file1.txt file2.txt
folder2:
file1.txt file2.txt
我需要比较folder1 和folder2 并打印出这两个目录中不同的文件名。我想首先使用ls 命令获取文件列表并将它们放在list 中,然后使用python 的filecmp 比较它们,如下所示:
import os
import filecmp
folder1_path = "/home/user/folder1/"
folder2_path = "/home/user/folder2/"
def ls(path):
all = []
walked = os.walk(path)
for base, sub_f, files in walked:
for sub in sub_f:
entry = os.path.join(base,sub)
entry = entry[len(path):].strip("\\")
all.append(entry)
for file in files:
entry = os.path.join(base,file)
entry = entry[len(path):].strip("\\")
all.append(entry)
all.sort()
return all
def folder_diff(folder1_path, folder2_path):
folder1_list = ls(folder1_path)
folder2_list = ls(folder2_path)
for item1, item2 in zip(folder1_list, folder2_list):
res = filecmp.cmp(folder1_path + item1, folder2_path + item2)
data = folder_diff(folder1_path, folder2_path)
print(data)
当两个文件夹中都存在文件时,这会引发错误FileNotFound。任何人都可以请提出任何更新。谢谢
【问题讨论】:
-
函数folder_diff中,folder1_list中存储的内容是什么,只是文件名或文件名的完整文件路径,因为python需要完整的文件路径才能访问文件
-
@SuryaTej 谢谢苏里亚。是的,这是错误的。我现在已经给出了完整的路径,它正在工作。
-
@SuryaTej。请再次查看代码并进行审核