비슷한 형식의 약 200 개의 짧은 텍스트 파일 (50kb)이 있습니다. 특정 문자열이 들어있는 각 파일에서 줄을 찾은 다음 해당 줄과 다음 세 줄 (파일의 나머지 줄은 제외)을 다른 텍스트 파일에 쓰려고합니다. 나는 이것을하기 위해 파이썬을 가르치려고 노력하고 있으며 이것을 시험해보기 위해 아주 단순하고 조잡한 작은 스크립트를 작성했습니다. 나는 2.6.5 버전을 사용 중이며 Mac 터미널에서 스크립트를 실행하고있다.파이썬을 사용하여 한 파일에서 다른 파일로 특정 줄을 작성하십시오.
#!/usr/bin/env python
f = open('Test.txt')
Lines=f.readlines()
searchquery = 'am\n'
i=0
while i < 500:
if Lines[i] == searchquery:
print Lines[i:i+3]
i = i+1
else:
i = i+1
f.close()
이것은 다소 효과가 있으며 출력을 화면에 출력한다. 하지만 대신 새로운 파일에 줄을 인쇄하고 싶습니다. 그래서 다음과 같이 시도했습니다.
f1 = open('Test.txt')
f2 = open('Output.txt', 'a')
Lines=f1.readlines()
searchquery = 'am\n'
i=0
while i < 500:
if Lines[i] == searchquery:
f2.write(Lines[i])
f2.write(Lines[i+1])
f2.write(Lines[i+2])
i = i+1
else:
i = i+1
f1.close()
f2.close()
그러나 파일에는 아무 것도 기록되지 않습니다. 나는 또한 시도했다
from __future__ import print_function
print(Lines[i], file='Output.txt')
그리고 어느 쪽이라도 일하게 할 수 없다. 누군가 내가 잘못하고있는 것을 설명 할 수 있거나 대신 시도해야하는 것에 대해 제안 할 수 있다면 정말 감사 할 것입니다. 또한 검색을 향상시키기위한 제안 사항이 있으면 감사하겠습니다. 내가 찾고자하는 문자열이 줄의 유일한 텍스트 인 테스트 파일을 사용했지만 실제 파일에서 필요한 줄은 여전히 줄의 시작 부분에 있지만 다른 텍스트가 뒤 따랐다. 나는 내가 설정 한 것들이 실제로 작동하지 않을 것이라고 생각한다.
감사합니다. 매우 근사한 질문 인 경우 죄송합니다.
두 번째 예에서는 루프 본문이 들여 쓰이지 않은 것처럼 보입니다. 복사/붙여 넣기 오류 또는 실제로 갖고있는 것입니까? – Collin
아마도'enumerate' 함수와'for x in iterable' 구조를 살펴 봐야 할 것입니다. –
@Collin 당신은 문제가 들여 쓰기 맞습니다.아마 두 시간 동안 그 코드를보고 결코 눈치 채지 못했습니다! 감사! – Andreanna