SVill :
나는 도시의 목록이 텍스트 파일을 업데이트하는 프로그램을 만드는거야 :
New York City
New York
USA
Newark
New Jersey
USA
Toronto
Ontario
Canada
나는 bash는 스크립트를 사용하여 뉴 어크에 대한 세부 정보를 삭제하고 싶다면,이 작업을 수행 할 수 있습니다 :
sed -i "/Newark/,+3d" test.txt
그리고 그 다음 날 떠날 것이다 :
New York City
New York
USA
Toronto
Ontario
Canada
그러나, 나는 파이썬에서이 작업을 수행하고자, 나는 뉴 어크에 선 후, 다음 줄을 삭제하는 방법을 알아내는 문제에 봉착했습니다. 나는 뉴 어크을 삭제할 수 있습니다 :
with open('test.txt') as oldfile, open('test2.txt', 'w') as newfile:
for line in oldfile:
if not "Newark" in line:
newfile.write(line)
os.remove('test.txt')
os.rename('test2.txt', 'test.txt')
그러나 나머지 두 줄을 위해 아무것도하지 않는다, 나는 다음 원본 파일을 대체하기 위해 사용해야 할 새 파일을 만듭니다.
- 어떻게 파이썬으로 나오지도 명령의 기능을 mimicing에 대해 갈 수 있나요?
- 나는 그것에서 삭제해야 할 파일 매번 생성하고 교체하지 않아도 파일 편집에 할 수있는 방법이 있나요?
라파엘 Medaer :
카운터로? 여기있어:
with open('test.txt') as oldfile, open('test2.txt', 'w') as newfile:
skip = 0
for line in oldfile:
if "Newark" in line:
skip = 3
elif skip > 0:
skip = skip - 1
else:
newfile.write(line)
편집하다:
나는 첫 번째 질문에 대답했다. fileinput 함수 지원 파일 편집, 여기 봐주십시오 : 어떻게 검색하고 파일에서 텍스트를 교체하려면? BTW, 나는 또한 추천 에서 현재 위치에 있기 때문에 그것은 표준 출력을 납치하지 않습니다