比较python中不同目录之间的两个文件列表



我正在尝试比较来自不同目录的两个文件列表。如果找到匹配项,则应将文件写入其他目录。下面是我的代码。

filelist= ['sample2\output_1.txt','sample2\output_2.txt','sample3\asn_todlx_mf_output_3.txt']
filelist2 = ['sample\output_1.txt','sample\output_3.txt','sample\output_7.txt','sample\output_2.txt','sample1\output_3.txt']
a = 1
for name in filelist:
    a = a + 1 
    for x in filelist2 :
        file1 = open(x, 'r')
        file2 = open(name,'r')
        FO = open('right\right_file'+str(a)+'.txt', 'w')
        for line1 in file1:
            for line2 in file2:
                if line1 == line2:
                    FO.write("%sn" %(line1))
        FO.close()
        file1.close()
        file2.close()

例如,将"sample folder(filelist)"中的output1与"sample2(filelist"中的每个文件进行比较,如果匹配,则应将其写入"right"文件夹,如"right_file1.txt"。但该脚本生成了从"rightfiles1.txt"到"rightfile15.txt"的15个文件。当我尝试将一个文件与文件列表进行比较时,效果很好。请帮我拿这个。

我就是这么做的。

filelist1   = ['sample2\output_1.txt','sample2\output_2.txt','sample3\asn_todlx_mf_output_3.txt']
filelist2   = ['sample\output_1.txt','sample\output_3.txt','sample\output_7.txt','sample\output_2.txt','sample1\output_3.txt']
dir1 = filelist1[0].split('\')[:-1]
filelist1 = [x.split('\')[-1] for x in filelist1]
dir2 = filelist2[0].split('\')[:-1]
filelist2 = [x.split('\')[-1] for x in filelist2]
common = [x for x in filelist1 if x in filelist2]
print(common)
# ['output_1.txt', 'output_2.txt']
a = 1
for file in common:
    a += 1 
    with open(dir1 + '\' + file) as f_in:
        contents = f_in.readlines()
        with open('right\right_file' + str(a) + '.txt', 'w') as f_out:
            f_out.write(contents)

最初,我查找这两个列表之间常见的文件,并将它们的名称存储在common中。然后,对于common列表中的所有文件,我在您提到的其他目录中创建它们的副本。请注意with的使用,它处理文件的关闭和刷新。使用它而不是手动管理文件,除非你有理由不这样做。

最后,我没有得到迭代器a背后的逻辑,但我只是从您那里复制了它。它从值2开始!如果你想从复制的文件中获取数字,你必须采取不同的做法。您的方式使创建的文件的来源无法追踪。。

如果这对你有用,请告诉我。

相关内容

  • 没有找到相关文章

最新更新