私はPython初心者で、2つのファイルの行間の値を比較して、「行名」を出力しようとしています。行が2番目のファイルにある場合は1、行が2番目のファイルにない場合は0です。その行は 2 番目のファイルにあるため、最初の反復では 1 が返されますが、1,000 行を超える残りの行については、2 番目のリストにあるかどうかに関係なく、すべて 0 が返されます。2 番目の「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!
いくつかの変更の後、これは私が持っているものであり、「1」のみを返します
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')
恥ずかしいことに、同じファイルを 2 回開いていました。ルーキー。