2011-02-03 2 views
0

마지막 값 (예 : lo:)을 찾고 여기에 값을 추가하고 싶습니다. 예.파이썬 배우기 : 파일 내의 값 찾기 및 추가

ifconfig lo:1 
address x.x.x.x 
netmask x.x.x.x 
gateway x.x.x.x 

ifconfig lo:2 
address x.x.x.x 
netmask x.x.x.x 
gateway x.x.x.x 

ifconfig lo:3 
address x.x.x.x 
netmask x.x.x.x 
gateway x.x.x.x 

할 수있는 가장 좋은 방법은 무엇입니까 : 나는이 경우, 마지막 값을 lo:3을 찾아서 lo:4

파일을 추가하려면? 분할 또는 루프 + 수표로 읽음.

+2

문제를 해결하기 위해 작성한 코드를 추가하거나 작업을 수행하고 싶습니다. 당신이 가진 문제는 무엇입니까? –

+0

은 미리 알려진 파일의 형식입니까? ifconfing lo 후에 항상 3 줄이 있습니다 :? – Francesco

+0

Jochen, 코드를 추가 할 수는 있지만 함수 또는 호출을 알고 싶습니다. 그렇다면 내 연구를 할 것입니다. 배우고 싶습니다. 그런데 내 목표는 다음과 같습니다. 내 마지막 "lo : VALUE"를 확인한 다음 새로운 "lo : VALUE +1" –

답변

2

파일의 구조를 너무 많이 가정하지 않으면 파일을 구문 분석하고 모든 "ifconfig lo :"행을 추적해야합니다 (예 : 실행중인 최대 값 업데이트). 이 경우 :

당신이 모든 것을 본 후에는
max_value_observed == 3 # at the end of this step 

, 당신은 최대 값을 알 수 및 다음 계산 할 수있을 것입니다 :

new_max_value = max_value_observed + 1 

을하고 지금은에 데이터를 추가 할 준비가 너의 파일. 분명히 파일의 구조가 미리 알려졌다면 쉽게 알 수 있습니다 (예 : 파일이 정렬되어 있다는 것을 알고 있으므로 최대 값을 계산할 필요는 없지만 마지막 값을 찾는 것만으로 충분합니다).

+0

을 추가하십시오. 파일 안에 문자열을 검색하는 경우 빌드해야한다고 생각합니다. 어떻게 생각해 ? –

+0

@ Simão : 간단한 접근법 (line.startswith ("ifconfig lo :"및 값 캡처) 또는 (똑같이 단순한) 정규식을 사용할 수 있습니다. IT는 달성하려는 정도 또는 견고성에 달려 있습니다 .. – Francesco

+0

답장을 보내 주셔서 감사합니다! –

2

다양한 방법이 있습니다. 그 중 하나는 연습으로 남아 어떻게 작동하는지 알아내는 :,

import re 
print max(map(int, re.findall('ifconfig[ \t]+lo:(\d+)', open('f.txt').read(), re.M))) 

을 예컨대을 정규 표현식을 사용하는 것입니다.

+0

답장을 보내 주셔서 감사합니다! –