从两个文件中提取行,输出到同一行-python

从两个文件中提取行,输出到同一行-python,python,read-write,Python,Read Write,我试图打开两个文件,然后取第一个文件中的第一行,将其写入输出文件,然后取第二个文件中的第一行,并将其附加到输出文件中的同一行,用制表符分隔 我试图对其进行编码,我的输出文件只是第一个文件的全部内容,然后是第二个文件的全部内容。我包含print语句只是因为我想在脚本运行时看到终端中发生的事情,这就是它们存在的原因。有什么想法吗 import sys InFileName = sys.argv[1] InFile = open(InFileName, 'r')

我试图打开两个文件,然后取第一个文件中的第一行,将其写入输出文件,然后取第二个文件中的第一行,并将其附加到输出文件中的同一行,用制表符分隔

我试图对其进行编码,我的输出文件只是第一个文件的全部内容,然后是第二个文件的全部内容。我包含print语句只是因为我想在脚本运行时看到终端中发生的事情,这就是它们存在的原因。有什么想法吗

import sys


InFileName = sys.argv[1]                 

InFile = open(InFileName, 'r') 

InFileName2 = sys.argv[2]

InFile2 = open(InFileName2, 'r')

OutFileName = "combined_data.txt"

OutFile = open(OutFileName, 'a')

for line in InFile:
    OutFile.write(str(line) + '\t')
    print line
    for line2 in InFile2:
        OutFile.write(str(line2) + '\n')
        print line  

InFile.close()
InFile2.close()
OutFile.close()

也许这会给你一些想法:

这将为您提供:

line1_of_file_1        line1_of_file_2
line2_of_file_1        line2_of_file_2
line3_of_file_1        line3_of_file_2
line4_of_file_1        line4_of_file_2
其中,我的输出示例中的空格是[tab] 注意:由于明显的原因,文件中没有追加任何行尾

要使其正常工作,文件1和文件2中的linending都必须正确。 要检查此项,请执行以下操作:

print 'File 1:'
f = open('input.txt', 'rb')
print [r.read[:200]]
f.close()

print 'File 2:'
f = open('input2.txt', 'rb')
print [r.read[:200]]
f.close()
这应该会给你一些

文件1:
['这是一大堆\t文本\r\n和几行\r\n数字\r\n']
文件2:
['Give\r\nMe\r\n一些\r\n爱情\r\n']


也许这会给你一些想法:

这将为您提供:

line1_of_file_1        line1_of_file_2
line2_of_file_1        line2_of_file_2
line3_of_file_1        line3_of_file_2
line4_of_file_1        line4_of_file_2
其中,我的输出示例中的空格是[tab] 注意:由于明显的原因,文件中没有追加任何行尾

要使其正常工作,文件1和文件2中的linending都必须正确。 要检查此项,请执行以下操作:

print 'File 1:'
f = open('input.txt', 'rb')
print [r.read[:200]]
f.close()

print 'File 2:'
f = open('input2.txt', 'rb')
print [r.read[:200]]
f.close()
这应该会给你一些

文件1:
['这是一大堆\t文本\r\n和几行\r\n数字\r\n']
文件2:
['Give\r\nMe\r\n一些\r\n爱情\r\n']

您可以为此使用:

with open(file1) as f1,open(file2) as f2,open("combined_data.txt","w") as fout:
     for t in zip(f1,f2):
         fout.write('\t'.join(x.strip() for x in t)+'\n')
如果两个文件的行数不相同(或者如果它们非常大),您可以使用

,您可以使用:

with open(file1) as f1,open(file2) as f2,open("combined_data.txt","w") as fout:
     for t in zip(f1,f2):
         fout.write('\t'.join(x.strip() for x in t)+'\n')

如果您的两个文件的行数不相同(或者如果它们非常大),您可以使用

,谢谢您的帮助!也许,我解释得有点错误。我想获取这两个文件的每一行,然后将它们添加到输出中,这样输出看起来像:tab line break tab line break tab line break tab line break等。当我运行代码时,我会不断获取第一个文件的每一行,然后只获取附加到第一个文件最后一行的第二个文件的第一行。对不起,我希望这不是太棘手。啊,我可能误解了你的意思。更新了我的aproach版本。我想它很接近。只有第一个文件行中的第一个字符被打开,我认为它一次迭代一个字符,因为每一行都被打开。第二个文件正好附加到该行。我尝试将“for line in fh.readline():”更改为“for line in fh:”,但随后发生了一个最初的问题,即仅将其附加到整个第一个文件的末尾……忘记了结尾处的一个s:P lol!fh.readline()和fh.readlines()之间有一个很大的区别,..lines()返回所有行的列表,而readline()在调用时只占用一行。因此,在上面的示例中,您需要readlines():)谢谢您的帮助。出于某种原因,当我这样做时,输出返回到具有整个第一个文件,然后将第二个文件中的一行附加到最后一行。我认为这可能是Python2.7的一个问题,所以我切换到3,得到了可怕的“TypeError:TypeStr不支持缓冲区API”错误。我的文件可能有问题吗?谢谢你的帮助!也许,我解释得有点错误。我想获取这两个文件的每一行,然后将它们添加到输出中,这样输出看起来像:tab line break tab line break tab line break tab line break等。当我运行代码时,我会不断获取第一个文件的每一行,然后只获取附加到第一个文件最后一行的第二个文件的第一行。对不起,我希望这不是太棘手。啊,我可能误解了你的意思。更新了我的aproach版本。我想它很接近。只有第一个文件行中的第一个字符被打开,我认为它一次迭代一个字符,因为每一行都被打开。第二个文件正好附加到该行。我尝试将“for line in fh.readline():”更改为“for line in fh:”,但随后发生了一个最初的问题,即仅将其附加到整个第一个文件的末尾……忘记了结尾处的一个s:P lol!fh.readline()和fh.readlines()之间有一个很大的区别,..lines()返回所有行的列表,而readline()在调用时只占用一行。因此,在上面的示例中,您需要readlines():)谢谢您的帮助。出于某种原因,当我这样做时,输出返回到具有整个第一个文件,然后将第二个文件中的一行附加到最后一行。我认为这可能是Python2.7的一个问题,所以我切换到3,得到了可怕的“TypeError:TypeStr不支持缓冲区API”错误。我的文件可能有问题吗?谢谢你的帮助,但是,正如我向另一位评论者解释的那样,我很难让它正常工作。它似乎占用了第一个文件的所有行,然后将第二个文件的第一行附加到第一个文件的最后一行。相反,我希望的是:“line1file1”选项卡“line1file2”换行符“line2file1”选项卡“line2file2”换行符等。非常感谢您的帮助@米克拉塞马,这正是我们应该做的。你能再检查一次吗?在python3中再次尝试,效果更好,但在第一个文件的行之后仍然保持回车,有没有办法去掉这些?Cheers@Micrasema对不起,我现在明白问题了。我已经更新了一个版本,删除了行尾的空白(我以前没有考虑到这一点),谢谢你的帮助,但是,正如我向另一位评论者解释的那样,我很难让它正常工作。它似乎占用了第一个文件的所有行,然后将第二个文件的第一行附加到第一个文件的最后一行。相反,我希望的是:“line1file1”选项卡“line1file2”换行符“line2file1”选项卡“line2file2”换行符等。非常感谢