[python] 파이썬에서 파일에 어떻게 추가합니까?

파일을 덮어 쓰지 않고 파일에 어떻게 추가합니까? 파일에 추가되는 특수 기능이 있습니까?



답변

with open("test.txt", "a") as myfile:
    myfile.write("appended text")


답변

“a”또는 “ab”를 모드로 설정하여 추가 모드에서 파일을 열어야합니다. open ()을 참조하십시오 .

“a”모드로 열면 쓰기 위치는 항상 파일의 끝에 있습니다 (첨부 파일). “a +”로 열면 읽을 수 있고 뒤로 탐색하고 읽을 수 있습니다 (그러나 모든 쓰기는 여전히 파일 끝에 있습니다!).

예:

>>> with open('test1','wb') as f:
        f.write('test')
>>> with open('test1','ab') as f:
        f.write('koko')
>>> with open('test1','rb') as f:
        f.read()
'testkoko'

참고 : ‘a’를 사용하는 것은 ‘w’로 열고 파일 끝을 찾는 것과 다릅니다. 다른 프로그램이 파일을 열고 찾기와 쓰기 사이에 쓰기를 시작하면 어떤 일이 발생할 수 있는지 고려하십시오. 일부 운영 체제에서 ‘a’를 사용하여 파일을 열면 다음 쓰기가 모두 파일 끝에 원자 적으로 추가됩니다 (파일이 다른 쓰기에 의해 증가하더라도).


“a”모드의 작동 방식에 대한 몇 가지 세부 사항 ( Linux에서만 테스트 됨 ). 다시 검색하더라도 모든 쓰기는 파일 끝에 추가됩니다.

>>> f = open('test','a+') # Not using 'with' just to simplify the example REPL session
>>> f.write('hi')
>>> f.seek(0)
>>> f.read()
'hi'
>>> f.seek(0)
>>> f.write('bye') # Will still append despite the seek(0)!
>>> f.seek(0)
>>> f.read()
'hibye'

실제로 fopen 맨 페이지 는 다음 과 같이 말합니다.

추가 모드 (파일의 첫 번째 문자)에서 파일을 열면이 스트림에 대한 모든 후속 쓰기 작업이 마치 호출 앞에 오는 것처럼 파일 끝에서 발생합니다.

fseek(stream, 0, SEEK_END);

이전 간단한 답변 (을 사용하지 않음 with)

예 : ( 실제 프로그램 에서 파일을 닫는 데 사용with설명서 참조 )

>>> open("test","wb").write("test")
>>> open("test","a+b").write("koko")
>>> open("test","rb").read()
'testkoko'


답변

난 항상 이렇게 해요

f = open('filename.txt', 'a')
f.write("stuff")
f.close()

간단하지만 매우 유용합니다.


답변

아마도 "a"모드 인수 로 전달하고 싶을 것입니다 . open ()에 대한 문서를 참조하십시오 .

with open("foo", "a") as f:
    f.write("cool beans...")

업데이트 (+), 절단 (w) 및 이진 (b) 모드에 대한 모드 인수의 다른 순열이 있지만 시작하는 "a"것이 가장 좋습니다.


답변

파이썬은 주요 세 가지 모드 중에서 많은 변형이 있습니다.이 세 가지 모드는 다음과 같습니다.

'w'   write text
'r'   read text
'a'   append text

따라서 파일에 추가하는 것은 다음과 같이 쉽습니다.

f = open('filename.txt', 'a') 
f.write('whatever you want to write here (in append mode) here.')

그런 다음 코드를 더 적은 줄로 만드는 모드가 있습니다.

'r+'  read + write text
'w+'  read + write text
'a+'  append + read text

마지막으로 이진 형식의 읽기 / 쓰기 모드가 있습니다.

'rb'  read binary
'wb'  write binary
'ab'  append binary
'rb+' read + write binary
'wb+' read + write binary
'ab+' append + read binary


답변

이 행을 사용할 때 파일을 추가 open(filename, "a")한다는 a것을 나타내므로 기존 파일에 추가 데이터를 삽입 할 수 있습니다.

다음 줄을 사용하여 파일에 텍스트를 추가 할 수 있습니다

def FileSave(filename,content):
    with open(filename, "a") as myfile:
        myfile.write(content)

FileSave("test.txt","test1 \n")
FileSave("test.txt","test2 \n")


답변

print대신 다음과 write같이 할 수도 있습니다 .

with open('test.txt', 'a') as f:
    print('appended text', file=f)

경우 TEST.TXT가 존재하지 않는, 그것은 생성됩니다 …