2013-08-16 3 views
0

우리는 하나의 파일 (황금 파일)을 다른 파일과 비교하여 파일이 올바른지 아닌지를 비교합니다. 그것은 같은 가치를 가져야한다. 일반적으로 diff 유틸리티를 사용하여 두 파일을 비교합니다. 프로세스 정보 파일에 프로세스 정보를 추가하는 기능이 향상되었습니다. 그래서 나는 이전 라인을 비교하고 새로운 변화를 무시하고 싶다. 누구나 파이썬에서 사용할 수있는 유틸리티를 제공 할 수 있습니까?은 지정된 줄과 두 파일을 비교합니다.

골든 파일

CMD gen -vdd 0.99 -vss 0 -sinps 0.02 -slew 0.1 -temp -40 -rise -data 
CMD gen -vdd 0.99 -vss 0 -sinps 0.06 -slew 0.1 -temp -40 -rise -clock 
CMD gen -vdd 0.99 -vss 0 -sinps 0.02 -slew 0.1 -temp -40 -fall -data 
CMD gen -vdd 0.99 -vss 0 -sinps 0.02 -slew 0.1 -temp -40 -fall -data 
CMD gen -vdd 0.99 -vss 0 -sinps 0.06 -slew 0.1 -temp -40 -rise -clock 
CMD gen -vdd 0.99 -vss 0 -sinps 0.02 -slew 0.1 -temp -40 -rise -data 
Temp1 Temp2 Temp3 Temp4 Temp5 Temp6 
-31.00  -19.00  -3.00  -8.00  43.00  61.00 

프로세스 파일

CMD gen -vdd 0.99 -vss 0 -sinps 0.02 -slew 0.1 -temp -40 -rise -data 
CMD gen -vdd 0.99 -vss 0 -sinps 0.06 -slew 0.1 -temp -40 -rise -clock 
CMD gen -vdd 0.99 -vss 0 -sinps 0.02 -slew 0.1 -temp -40 -fall -data 
CMD gen -vdd 0.99 -vss 0 -sinps 0.02 -slew 0.1 -temp -40 -fall -data 
CMD gen -vdd 0.99 -vss 0 -sinps 0.06 -slew 0.1 -temp -40 -rise -clock 
CMD gen -vdd 0.99 -vss 0 -sinps 0.02 -slew 0.1 -temp -40 -rise -data 
Temp1 Temp2 Temp3 Temp4 Temp5 Temp6 
-31.00  -19.00  -3.00  -8.00  43.00  61.00 
Adding machine name(ignore machine name) 

나는

data = None 
with open("Golden_File",'r+') as f: 
    data = f.readlines() 
del data[-1] 

data_1 = None 
with open("cp.log",'r+') as f: 
    data_1 = f.readlines() 
del data_1[-1] 
print cmp(data, data_1) 

[질문] 코드 개선을위한 우리 더 좋은 방법 following.Can에 쓰기 코드를 가지고 : CMP 기능을합니까 목록에서도 잘 작동합니다. 나는 처음으로 사용하고 어떻게 내부적으로 작동하는지 모르겠습니다.

답변

1

이 간단한 :

with open('golden_file') as afile, open('process_file') as bfile: 
    matches = len(afall(aline == bline for aline, bline in zip(afile, bfile)) 

    # check the golden file iterator is exhausted 
    if any(afile): 
     matches = False 

zip가 반복 가능한 matchin를 반환한다는 사실을 활용 짧은

의 길이
0

difflib을 사용하십시오. 커맨드 라인 diff 등의 대부분을 처리합니다. 뭔가

관련 문제