Python 比较两个文件

Python 比较两个文件,python,text-processing,Python,Text Processing,我有两个这种格式的文件 file1= filename val1 val2 file2= filename val3 val4 我想比较文件名,如果它们有相同的名称,我想得到第三个这样的文件- filename val1 val2 val3 val4 我正在从file1中选择一个文件名,然后穿过file2查看是否得到它。然后寻找指向下一个文件名的file2顶部的指针。有更有效的方法吗?创建一个dictfile2[filename]=(val3,val4)。您可以创建一次,然后从file1中获

我有两个这种格式的文件

file1= filename val1 val2
file2= filename val3 val4
我想比较文件名,如果它们有相同的名称,我想得到第三个这样的文件-

filename val1 val2 val3 val4

我正在从
file1
中选择一个文件名,然后穿过
file2
查看是否得到它。然后寻找指向下一个文件名的
file2
顶部的指针。有更有效的方法吗?

创建一个dict
file2[filename]=(val3,val4)
。您可以创建一次,然后从file1中获取的给定文件名的查找时间将是固定的(即或多或少与file2的大小无关)

听起来您需要的是标准的
join
命令(不是Python,而是标准的Unix shell实用程序)。下面是一个系统手册页面的剪报(似乎比Linux更详细):


您可能需要澄清您的问题并显示您正在使用的代码。谢谢!不幸的是,我得到了一个额外的新行..所以我得到的最终结果是文件名val1 val2(在新行上)val3 val4。我希望它像你展示的那样-在file1之后没有换行符。我正在使用加入文件1文件2>outputfile@Illusionist:可能与行尾有关。您的文件是否可能以CRLF终止(DOS样式)?那么您肯定只想将这些文件转换为LF,因为
join
命令可能不太知道如何处理CRLF文件(它将CR视为行的一部分,而不知道它是CRLF的一部分)。
        join phonedir names

        If the phonedir file contains the following names:

        Adams A.        555-6235
        Dickerson B.    555-1842
        Erwin G.        555-1234
        Jackson J.      555-0256
        Lewis B.        555-3237
        Norwood M.      555-5341
        Smartt D.       555-1540
        Wright M.       555-1234
        Xandy G.        555-5015

        and the names file contains these names and department numbers:

        Erwin           Dept. 389
        Frost           Dept. 217
        Nicholson       Dept. 311
        Norwood         Dept. 454
        Wright          Dept. 520
        Xandy           Dept. 999

        the join command displays:

        Erwin G.        555-1234        Dept. 389
        Norwood M.      555-5341        Dept. 454
        Wright M.       555-1234        Dept. 520
        Xandy G.        555-5015        Dept. 999