반응형
질문
파이썬 내장 open 함수에서, w
, a
, w+
, a+
, 그리고 r+
모드 간의 정확한 차이는 무엇인가요?
특히, 문서는 이러한 모두가 파일에 쓰기를 허용한다고 암시하며, "추가", "쓰기", 그리고 "업데이트"를 위해 파일을 열었음을 언급하지만, 이러한 용어들이 정확히 무엇을 의미하는지는 정의하지 않습니다.
답변
오프닝 모드는 C 표준 라이브러리 함수인 fopen()
과 정확히 동일합니다.
BSD fopen
매뉴얼 페이지에서는 다음과 같이 정의합니다:
인수 mode은 다음 중 하나로 시작하는 문자열을 가리킵니다 (이들 시퀀스 뒤에 추가 문자가 올 수 있음):
``r'' 텍스트 파일을 읽기 위해 엽니다. 스트림은 파일의 시작 위치에 있습니다.
``r+'' 읽기 및 쓰기를 위해 엽니다. 스트림은 파일의 시작 위치에 있습니다.
``w'' 파일을 길이 0으로 잘라내거나 쓰기 위한 텍스트 파일을 생성합니다. 스트림은 파일의 시작 위치에 있습니다.
``w+'' 읽기 및 쓰기를 위해 엽니다. 파일이 존재하지 않으면 생성하고, 그렇지 않으면 잘라냅니다. 스트림은 파일의 시작 위치에 있습니다.
``a'' 쓰기 위해 엽니다. 파일이 존재하지 않으면 생성합니다. 스트림은 파일의 끝에 위치합니다. 이후 파일에 대한 쓰기는 fseek(3) 또는 유사한 함수를 통해 이루어지는지 여부에 관계없이 항상 현재 파일 끝에 끝나게 됩니다.
``a+'' 읽기 및 쓰기를 위해 엽니다. 파일이 존재하지 않으면 생성합니다. 스트림은 파일의 끝에 위치합니다. 이후 파일에 대한 쓰기는 fseek(3) 또는 유사한 함수를 통해 이루어지는지 여부에 관계없이 항상 현재 파일 끝에 끝나게 됩니다.
반응형
댓글