'rt'및 'wt'모드에서 파일 열기


108

여러 번 여기에서 파일을 읽고 쓰는 데 rtwt모드를 사용하는 사람들을 보았습니다 .

예를 들면 :

with open('input.txt', 'rt') as input_file:
     with open('output.txt', 'wt') as output_file: 
         ...

문서화 된 모드를 보지 못했지만 open()오류가 발생하지 않기 때문에 사용하는 것이 거의 합법적 인 것처럼 보입니다.

그것은 무엇이며 wtvs wrtvs를 사용하는 것의 차이점이 r있습니까?

답변:


193

t텍스트 모드를 나타냅니다. 텍스트 모드가 기본값이므로 rrt또는 w및 사이에는 차이가 없습니다 wt.

여기에 문서화 :

Character   Meaning
'r'     open for reading (default)
'w'     open for writing, truncating the file first
'x'     open for exclusive creation, failing if the file already exists
'a'     open for writing, appending to the end of the file if it exists
'b'     binary mode
't'     text mode (default)
'+'     open a disk file for updating (reading and writing)
'U'     universal newlines mode (deprecated)

기본 모드는 'r'(텍스트 읽기 용으로 열림,의 동의어 'rt')입니다.


4
Gotcha, python3 문서에 문서화되어 있습니다. 따라서 기본적으로 wtvs wrtvs r-just 사이에는 차이가 없습니다 explicit is better than implicit.
alecxe 2014

텍스트 모드가 기본이기 때문에 @alecxe 오른쪽, 사이에 차이가 없다 r하고 rt...
devnull

9
참고 w항상 동일하지 않습니다 wt. 이러한 경우 중 하나는 gzip.open바이너리 모드가 기본이며 텍스트 모드가 아닌 경우입니다 . 관련 질문 : stackoverflow.com/questions/42013083/…
Carl Ekerot

9

t것을 의미, 텍스트 모드를 나타냅니다 \n읽을 때 문자가 다시 파일에 기록 할 때 호스트 OS 라인 결말로 변환 될 것입니다. 텍스트 모드가 기본값이므로 플래그는 기본적으로 노이즈입니다.

이외의 U모드 플래그는 표준 C 라이브러리의 fopen()함수 에서 직접 가져 오며 , 이는 .NETpython2 문서 의 여섯 번째 단락에 문서화 되어 open()있습니다.

내가 아는 한, tC 표준의 일부가 아니며 C 표준의 일부가 아니므로 C 라이브러리의 많은 구현이 어쨌든 그것을 받아들이지 만 모두가 그렇게 할 것이라는 보장은 없으므로 모든 빌드에서 작동한다는 보장은 없습니다. 파이썬. 그것은 python2 문서가 그것을 나열하지 않은 이유와 어쨌든 일반적으로 작동하는 이유를 설명합니다. python3 워드 프로세서 가 공식 확인합니다.


4

'r'는 읽기 용, 'w'는 쓰기 용, 'a'는 추가 용입니다.

't'는 바이너리 모드에 따른 텍스트 모드를 나타냅니다.

여러 번 여기에서 파일을 읽고 쓰기 위해 rt 및 wt 모드를 사용하는 사람들을 보았습니다.

편집 : rb가 아닌 rt를 보았습니까?

이러한 함수는 일반적으로 여기에 설명 된 fopen 함수를 래핑합니다 .

http://www.cplusplus.com/reference/cstdio/fopen/

보시다시피 바이너리 모드에서 파일을 열기 위해 b를 사용하는 것을 언급합니다.

제공 한 문서 링크는 또한이 b 모드를 참조합니다.

'b'를 추가하면 바이너리와 텍스트 파일을 다르게 취급하지 않는 시스템에서도 유용하며 문서로 사용됩니다.


예, rt예를 들어 stackoverflow.com/questions/10971033/… 또는 stackoverflow.com/questions/17127853/… 등등이었습니다. 정보를 주셔서 감사합니다. 알아두면 좋습니다.
alecxe 2014

devnull이 제공하는 링크에는 't'텍스트 옵션이 나열됩니다. 저를 놀라게 한 것은 C ++ 링크가 몇 년 전에 작성된 C fopen 코드에서 'rt'및 'wt'옵션을 사용했다고 확신하기 때문에 't'옵션을 언급하지 않았다는 것입니다.
jussij

네, 그것이 제가 물어 본 이유입니다. 그것은 저에게 문서화되지 않은 기능과 같았습니다. 스레드가 미래에 누군가를 도울 수 있기를 바랍니다. 다시 한 번 감사드립니다.
alecxe 2014

3

t 표시 text mode

https://docs.python.org/release/3.1.5/library/functions.html#open

리눅스에서 텍스트 모드와 바이너리 모드 사이에는 차이가 없습니다, 그러나, 창, 그들은 변환 \n\r\n할 때 텍스트 모드.

http://www.cygwin.com/cygwin-ug-net/using-textbinary.html


5
Python 3에는 텍스트 모드와 바이너리 파일 모드 (모든 플랫폼에서) 사이에 추가적인 차이점이 있습니다. 텍스트 모드에서 read유니 코드 문자열을 반환합니다. 바이너리 모드에서 인스턴스를 read반환 bytes합니다. 순방향 호환성을 염두에두고 Python 2 코드를 작성 io.open하려면 표준 대신 사용 open하여 Python 3 동작 ( unicodestr인스턴스 사용) 을 얻을 수 있습니다.
Blckknght
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.