2014-09-03 4 views
1

파일의 특정 문자열을 검색하고이를 기반으로 파일 데이터를 처리해야합니다."with"의 파일 객체를 1 번 이상 사용하십시오.

나는 파일을 2 번 열어서 어떻게하는지 알고있다.

파일을 한 번만 열어서이 작업을 수행 할 수 있습니까?

코드 :

with open(path, "r") as _file: 
    for line in _file: 
     if "my_string" in line: 
      flag = True 
      break 

with open(path, "r") as _file: 
    for line in _file; 
     if flag: 
      process line 
      ... 
     else: 
      process differently 
      ... 

내가 시도 :

with open(path, "r") as _file: 
    for line in _file: 
     if "my_string" in line: 
      flag = True 
      break 

    for line in _file; 
     if flag: 
      process line 
      ... 
     else: 
      process differently 
      ...   

그러나 여기 루프 2가 1 루프가 떠난 곳에서 시작, 그것은 파일의 첫째 줄에서 시작되지 않고 그 이유는이 여기서 일하지 않아.

+0

왜 먼저 신고해야합니까? if 루프에서 직접 처리 할 수없는 이유는 무엇입니까? –

+0

"내 문자열"은 파일의 첫 번째 줄과 마지막 줄 사이에 있고 파일의 모든 줄을 처리해야하기 때문에 @BurhanKhalid가됩니다. – Patrick

답변

2

두 번째 루프가 시작되기 전에 파일 위치를 처음으로 되 감을 필요가 있습니다. _file.seek(0)으로이 작업을 수행 할 수 있습니다.

+0

두 번째 루프 전에 _file.seek (0)이 맞습니까? – Patrick

+0

물론, 죄송합니다 – wRAR

+0

그냥 알고 싶어이 할 다른 방법이 있습니까? – Patrick