我是一个 python 菜鸟,我正在尝试比较两个文件中的行之间的值,如果该行在第二个文件中,则输出“行名”,后跟 1,如果第二个文件中缺少该行,则输出 0。第一次迭代返回 1,因为该行在第二个文件中,但对于剩余 > 1,000 行,无论它们是否在第二个列表中,它们都返回 0。似乎第二个“for循环”只在第一次迭代时执行。关于为什么的任何想法?这是我的代码:
import sys
file1 = sys.argv[1]
file2 = sys.argv[2]
name = str(file2)
f1 = open(file1, 'r')
f2 = open(file1, 'r')
o1 = open((name + '1.txt'), 'w')
for line in f1:
name = line.strip('\r\n')
count = 0
for line1 in f2:
if name == line1.strip('\r\n'):
count += 1
print (str(name) + '\t' + str(1))
o1.write(str(name) + '\t' + str(1) + '\r\n')
if count == 0:
print (str(name) + '\t' + str(0))
o1.write(str(name) + '\t' + str(0) + '\r\n')
f1.close()
f2.close()
o1.close()
Any help is very much appreciated!
经过一些更改,这就是我所拥有的,它只返回“1s”
f1 = open(file1, 'r') #opens files for reading
f2 = open(file2, 'r')
o1 = open((name + '1.txt'), 'w')
f2s = {line.strip('\n') for line in f2}
for line in f1:
line = line.strip('\n')
count = 0
if line in f2s:
count += 1
print (str(line) + '\t' + str(1))
o1.write(str(line) + '\t' + str(1) + '\n')
if count == 0:
print (str(line) + '\t' + str(0))
o1.write(str(line) + '\t' + str(0) + '\n')
尴尬的是,我打开同一个文件两次。菜鸟。