我写了一个Python脚本来比较的目录脚本比较目录
要求是他们的两个文件
directory1中有内容
1.txt
2.txt
3.txt
4.txt
6.txt
7.txt
9.txt
目录2有内容
1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt
目录2中的所有文件必须替换为目录1
例如directory1中的输出应该与内容所代替内directory2
1.txt
2.txt
3.txt
4.txt
5.txt
6.txt
7.txt
8.txt
9.txt
剧本我已经是
import os, sys
import filecmp
import re
from distutils import dir_util
import shutil
holderlist=[]
def compareme(dir1, dir2):
dircomp=filecmp.dircmp(dir1,dir2)
only_in_one=dircomp.left_only
diff_in_one=dircomp.diff_files
dirpath=os.path.abspath(dir1)
[holderlist.append(os.path.abspath(os.path.join(dir1,x))) for x in only_in_one]
[holderlist.append(os.path.abspath(os.path.join(dir1,x))) for x in diff_in_one]
if len(dircomp.common_dirs) > 0:
for item in dircomp.common_dirs:
compareme(os.path.abspath(os.path.join(dir1,item)), os.path.abspath(os.path.join(dir2,item)))
return holderlist
print holderlist
def main():
if len(sys.argv) > 3:
dir1=sys.argv[1]
dir2=sys.argv[2]
dir3=sys.argv[3]
else:
print "Usage: ", sys.argv[0], "currentdir olddir difference"
sys.exit(1)
if not dir3.endswith('/'): dir3=dir3+'/'
source_files=compareme(dir1,dir2)
dir1=os.path.abspath(dir1)
dir3=os.path.abspath(dir3)
destination_files=[]
new_dirs_create=[]
for item in source_files:
destination_files.append(re.sub(dir1, dir3, item))
for item in destination_files:
new_dirs_create.append(os.path.split(item)[0])
for mydir in set(new_dirs_create):
if not os.path.exists(mydir): os.makedirs(mydir)
copy_pair=zip(source_files,destination_files)
for item in copy_pair:
if os.path.isfile(item[0]):
shutil.copyfile(item[0], item[1])
if __name__ == '__main__':
main()
但它不是替换文件如预期
您能否介绍一下到目前为止您尝试过哪些故障排除步骤以及结果是什么? – glibdud
考虑到你使用'print',这看起来更像是python-2.x。你可否确认? –
您的脚本不能将Directory2的内容复制到Directory1并覆盖?如果不是,请提供更多示例。 –