我有这种格式比较两个文件
file1= filename val1 val2
file2= filename val3 val4
我想比较的文件名和两个文件,如果他们有相同的名字,我想第三个文件像这 -
filename val1 val2 val3 val4
我正在从file1
中挑选一个文件名,然后通过file2
来查看我是否可以得到它。然后寻找指针返回file2
的顶部为下一个文件名..有一个更有效的方法来做到这一点?
我有这种格式比较两个文件
file1= filename val1 val2
file2= filename val3 val4
我想比较的文件名和两个文件,如果他们有相同的名字,我想第三个文件像这 -
filename val1 val2 val3 val4
我正在从file1
中挑选一个文件名,然后通过file2
来查看我是否可以得到它。然后寻找指针返回file2
的顶部为下一个文件名..有一个更有效的方法来做到这一点?
创建词典file2[filename] = (val3, val4)
。你可以创建一次,然后查找时间为你从file1得到的给定文件名需要一段时间(即或多或少独立于文件2的大小)
这听起来像你要找的是标准join
命令(不是Python,而是一个标准的Unix shell实用程序)。下面是来自手册页剪断的系统上(似乎有更多的细节比Linux的man page for join):
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
谢谢!不幸的是我得到一个额外的新行..所以我得到的最终结果是文件名val1 val2(在新行)val3 val4。我希望它像你展示的那样 - 没有file1之后的换行符。我正在使用join file1 file2> outputfile – Illusionist 2011-05-06 01:43:05
@Illusionist:它可能*与行结尾相关。您的文件可能是CRLF终止(DOS风格)? – 2011-05-06 01:47:50
是的,它是CLRF终止 – Illusionist 2011-05-06 01:50:37
你可能想澄清你的问题,并显示您正在使用的代码。 – zeekay 2011-05-06 00:47:57