2016-07-29 2 views
1

파일이 있는데 파일에서 특정 행을 선택하여 다른 파일에 복사하려고합니다.Python : 한 파일에서 행 범위 선택 및 다른 파일로 복사

첫 번째 파일에서 복사하려는 줄에 "XYZ"라는 단어가 있고 여기에서 다음 200 줄 (일치하는 줄 포함)을 선택하고 다른 파일로 복사하려고합니다.

는 아래의 내 코드

match_1 = 'This is match word' 
with open('myfile.txt') as f1: 
    for num, line in enumerate(f1, 1): 
     if log_1 in line: 
      print line 

위의 코드는 라인의 시작 날 리드하고 난, 200 선이 일치하는 라인을 형성 한 후 복사를 선택 다른 텍스트 파일로 이동해야합니다.

나는 문 동안 같은 옵션 몇 가지를 시도,하지만 난 논리 fully.Please 도움말을 구축 할 수 아니다

답변

1

경기가 발견되면 사용자는 파일 객체에 itertools.islice를 사용할 수 있습니다

from itertools import islice 

# some code before matching line is found 
chunk = line + ''.join(islice(f1, 200)) 

이렇게하면 반복자 f1을 다음 200 줄까지 소비하므로 루프에 넣은 num 수가 일관성이 없을 수 있습니다. 당신이 경기를 찾은 후 파일의 다른 라인이 필요하지 않은 경우

, 당신은 사용할 수 있습니다

from itertools import islice 

with open('myfile.txt') as f1, open('myotherfile.txt') as f_out: 
    for num, line in enumerate(f1, 1): 
     if log_1 in line: 
      break 
    chunk = line + ''.join(islice(f1, 200)) 
    f_out.write(chunk) 
+0

귀하의 빠른 응답에 대해 모세에게 감사드립니다. 이것은 정확하게 내 문제를 해결합니다. – Davidson

0

어떻게

>>> with open("pokemonhunt", "r") as f: 
... Lines = [] 
... numlines = 5 
... count = -1 
... for line in f: 
...  if "pokemon" in line:   % gotta catch 'em all!!! 
...  count = 0 
...  if -1 < count < numlines: 
...  Lines.append(line) 
...  count += count 
...  if count == numlines: 
...  with open("pokebox","w") as tmp: tmp.write("".join(Lines)) 

아니면 내가 당신의 질문을 오해 같은 어떻습니까?

+0

(일치하는 파일이 두 개 이상있을 것으로 예상되면 매번 출력 파일 이름을 변경하거나 같은 파일에 추가하는 등) –

+0

빠른 응답을 보내 주셔서 감사합니다. 실제로 파일을 열어 검색하고 싶습니다. 일치하는 파일을 찾으면 다음 200 줄을 복사하고 추가 분석을 위해 새 파일을 넣어야합니다. 다음 질문에 선명도를 추가하려고합니다 ... – Davidson

+0

예, 이것이 무엇입니까? 이 않습니다. (귀하의 단어가 "포켓몬"이고 5 줄을 원한다면 : p) –

관련 문제