두 개의 탭 구분 파일이 있으며 첫 번째 파일의 모든 행을 다른 파일의 모든 행에 대해 테스트해야합니다.출력은 항상 마지막 줄 또는 모든 줄을 제공합니다.
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
하는의 내가 내지 컬럼 [3] 파일 1의보다 작은있는 (파일 1) 출력의 모든 행을 싶습니다 가정 해 봅시다 예,
파일 1의 경우 col [1]이 동일하다면 file2의 col (2)가 아닌 모든 col (2).
예상 출력 : 나는 우분투하고 있어요 때문에
row1 c1 36 345 A
row2 c3 36 9949 B
, 내가 같이하기 위해 입력 명령을 싶습니다 파이썬 code.py [파일 1] [파일 2]> [출력]
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
그러나, 출력은 다음과 같습니다 :
나는 다음과 같은 코드를 작성3210
row2 c3 36 9949 B
기본적으로 항상 중첩 루프의 조건이 참인 마지막 행만 가져옵니다.
if done == True: print x
(들여 하나),하지만 지금에 관계없이 이전 루프에서 테스트 조건, 파일 1의 모든 행을 인쇄 : 내가 대신이 시도. (> _ <)