Python 输出总是给出最后一行或所有行

Python 输出总是给出最后一行或所有行,python,csv,Python,Csv,我有两个以制表符分隔的文件,我需要对照另一个文件中的所有行测试第一个文件中的每一行。比如说, 文件1: row1 c1 36 345 A row2 c3 36 9949 B row3 c4 36 858 C 文件2: row1 c1 3455 3800 row2 c3 6784 7843 row3 c3 10564 99302 row4 c5 1405 1563 假设我想输出

我有两个以制表符分隔的文件,我需要对照另一个文件中的所有行测试第一个文件中的每一行。比如说,

文件1:

row1    c1    36    345   A
row2    c3    36    9949  B
row3    c4    36    858   C
文件2:

row1    c1    3455  3800
row2    c3    6784  7843
row3    c3    10564 99302
row4    c5    1405  1563
假设我想输出(file1)中的所有行,其中file1的col[3]小于file2的任何(不是每个)col[2],因为col[1]是相同的

预期产出:

row1    c1    36    345   A
row2    c3    36    9949  B  
由于我在Ubuntu中工作,我希望输入命令如下所示: python code.py[file1][file2]>[output]

我编写了以下代码:

import sys

filename1 = sys.argv[1]
filename2 = sys.argv[2]

file1 = open(filename1, 'r')

done = False

for x in file1.readlines():
    col = x.strip().split()
    file2 = open(filename2, 'r')
    for y in file2.readlines():
        col2 = y.strip().split()
        if col[1] == col2[1] and col[3] < col2[2]:
            done = True
            break
        else: continue
print x
基本上,我总是只得到嵌套循环中条件为真的最后一行。我试过这样做:

    if done == True: print x

(使用一个缩进),但现在它打印file1中的所有行,而不考虑上一个循环中测试的条件。(>您忘记在第一次匹配后重置
done
变量,在这种情况下不需要该变量。要修复代码,只需将
done=True
替换为
print x
,并使用
int(col[3])
将列作为数字(整数)进行比较

    if done == True: print x