반응형
Python에서 파일 읽기 및 덮어 쓰기
현재 나는 이것을 사용하고 있습니다 :
f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.close()
그러나 문제는 이전 파일이 새 파일보다 크다는 것입니다. 그래서 나는 그 끝에 이전 파일의 일부가있는 새 파일로 끝납니다.
경쟁 조건을 피하기 위해 파일을 닫았다가 다시 열지 않으려면 다음과 같이 할 수 truncate
있습니다.
f = open(filename, 'r+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
f.close()
기능은 또한 mVChr의 주석을 사용하여 더 깨끗하고 안전 할 수 있으며 with open as
, 오류가 발생하더라도 핸들러를 닫습니다.
with open(filename, 'r+') as f:
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.write(text)
f.truncate()
아마도. 후에 파일을 닫고 text = re.sub('foobar', 'bar', text)
쓰기 위해 다시 열고 (따라서 이전 내용을 지우고) 업데이트 된 텍스트를 작성 하는 것이 더 쉽고 깔끔 할 것입니다.
fileinput
모듈은이 inline
투명하게 파일 이름을 추적 오브젝트를 통해, 모듈 멋지게 파일 목록의 라인을 통해 루프의 공동 작업을 캡슐화 임시 파일을 사용하는 등없이 당신이 처리하는 파일에 대한 변경 사항을 작성하기위한 모드 루프 내에서 검사해야하는 경우 줄 번호 등.
import fileinput
for line in fileinput.FileInput("file",inplace=1):
if "foobar" in line:
line=line.replace("foobar","bar")
print line
새 파일로 작성해보십시오 ..
f = open(filename, 'r+')
f2= open(filename2,'a+')
text = f.read()
text = re.sub('foobar', 'bar', text)
f.seek(0)
f.close()
f2.write(text)
fw.close()
참고 URL : https://stackoverflow.com/questions/2424000/read-and-overwrite-a-file-in-python
반응형
'developer tip' 카테고리의 다른 글
Python 사전을 JSON 배열로 변환 (0) | 2020.08.28 |
---|---|
Spring Boot에서 모든 데이터베이스 관련 자동 구성 비활성화 (0) | 2020.08.28 |
Android SQLite : 삽입 / 바꾸기 메서드의 nullColumnHack 매개 변수 (0) | 2020.08.28 |
Mongoid 및 mongodb와의 관계를 통해 has_many를 구현하는 방법은 무엇입니까? (0) | 2020.08.28 |
델리게이트 또는 람다로 스톱워치 타이밍을 래핑 하시겠습니까? (0) | 2020.08.28 |