원래 여기에 게시 됨 : Python의 파일에서 처음 n 줄을 읽고 삭제하는 방법-Elegant Solution
나는 꽤 큰 파일 ~ 1MB 크기를 가지고 있으며 처음 N 줄을 읽고 나중에 사용하기 위해 목록 ( newlist )에 저장 한 다음 삭제할 수 있기를 원합니다 .
내 원래 코드는 다음과 같습니다.
import os
n = 3 #the number of line to be read and deleted
with open("bigFile.txt") as f:
mylist = f.read().splitlines()
newlist = mylist[:n]
os.remove("bigFile.txt")
thefile = open('bigFile.txt', 'w')
del mylist[:n]
for item in mylist:
thefile.write("%s\n" % item)
여기 에 게시되고 나중에 삭제 된 Jean-François Fabre 코드를 기반으로 다음 코드를 실행할 수 있습니다.
import shutil
n = 3
with open("bigFile.txt") as f, open("bigFile2.txt", "w") as f2:
for _ in range(n):
next(f)
f2.writelines(f)
이것은 처음 n 줄을 삭제하고 bigFile.txt를 "업데이트"하는 데 효과적이지만 처음 n 값을 목록에 저장하려고 할 때 나중에 다음과 같이 사용할 수 있습니다.
with open("bigFile.txt") as f, open("bigFile2.txt", "w") as f2:
mylist = f.read().splitlines()
newlist = mylist[:n]
for _ in range(n):
next(f)
f2.writelines(f)
"StopIteration"오류가 발생합니다.
샘플 코드에서 첫 번째 n
줄 을 찾기 위해 전체 파일을 읽고 있습니다.
# this consumes the entire file
mylist = f.read().splitlines()
이로 인해 후속 코드를 읽을 수있는 내용이 남지 않습니다. 대신 다음을 수행하십시오.
with open("bigFile.txt") as f, open("bigFile2.txt", "w") as f2:
# read the first n lines into newlist
newlist = [f.readline() for _ in range(n)]
f2.writelines(f)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다