Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何比较位于两个不同文件夹中具有相同名称的两个.text文件的每一行?_Python_Python 2.7_Subprocess - Fatal编程技术网

Python 如何比较位于两个不同文件夹中具有相同名称的两个.text文件的每一行?

Python 如何比较位于两个不同文件夹中具有相同名称的两个.text文件的每一行?,python,python-2.7,subprocess,Python,Python 2.7,Subprocess,我正在学习python。如果我的问题与格式不符,请提供建议。我想比较位于两个不同文件夹中的两个txt文件的任何单行。两个文件夹中的文件名相同。到目前为止,我已经写了这么多的代码。我想请求某人在这段代码上进一步帮助我。最后两个for循环是我的困惑所在,我不知道如何比较那边两个文件的每一行 import os dir1 ="C:/Users/Desktop/abc1-18/" dir2 ="C:/Users/Desktop/cde1-18/" for files in os.listdir(

我正在学习python。如果我的问题与格式不符,请提供建议。我想比较位于两个不同文件夹中的两个txt文件的任何单行。两个文件夹中的文件名相同。到目前为止,我已经写了这么多的代码。我想请求某人在这段代码上进一步帮助我。最后两个for循环是我的困惑所在,我不知道如何比较那边两个文件的每一行

import os

dir1 ="C:/Users/Desktop/abc1-18/"  
dir2 ="C:/Users/Desktop/cde1-18/"

for files in os.listdir(dir1):
    file_name1 = os.path.join(dir1,files)
    if files in os.listdir(dir2):
        file_name2 = os.path.join(dir2,files)

        with open(file_name1, "r") as fi:
          with open(file_name2,"r") as Ri:

            for line1 in fi:
                for line2 in Ri:
                    if line1==line2:
                        print "something"

这里的主要问题是,
Ri
句柄在外循环的一次迭代后在内循环中耗尽,因此您必须存储行,我建议使用
set
以更快地查找:

with open(file_name1, "r") as fi:
  with open(file_name2,"r") as Ri:
    lines2 = set(Ri)
    for line1 in fi:
        if line1 in lines2:
             print "something"
因为
set
和。。。这是因为第二个文件只读取一次

另外,你的外环也可以从同样的治疗中受益。改变

for files in os.listdir(dir1):
    file_name1 = os.path.join(dir1,files)
    if files in os.listdir(dir2):
        file_name2 = os.path.join(dir2,files)


避免不断扫描第二个目录,并将结果放入一个集合中,从而加快查找速度。

修复缩进,2)这是经典:您已经到达文件问题的末尾。我修复了缩进。不,这不是引用链接的副本。在本例中,我想比较两个txt文件之间的每一行,您没有修复缩进,这是一个经典的副本:
Ri
在一次迭代后为“空”。所以你的测试不起作用。倒带或将内线存储在列表中,或者最好是在
集合中
请您帮助我了解更多我没有修复缩进和Ri为空的地方?相信我,我只是在学习python,所以其中一些术语很难理解。我确实修复了我这边整个代码的缩进。
file2_dir = set(os.listdir(dir2))
for files in os.listdir(dir1):
    file_name1 = os.path.join(dir1,files)
    if file_name1 in file2_dir:
        file_name2 = os.path.join(dir2,files)