[python] Windows에서 Unix 줄 끝 문자를 작성하는 방법은 무엇입니까?

Python (Windows)을 사용하여 파일에 쓰고 Unix 줄 끝 문자를 사용하려면 어떻게해야합니까?

예 : 할 때 :

f = open ( 'file.txt', 'w')
f.write ( '안녕하세요 \ n')
f.close ()

파이썬은 자동으로 대체 \n와 함께 \r\n.



답변

Python 2 및 3의 경우

참조 : 현대적인 방법 : 바로이 페이지에서 newline = ” 대답을 사용 하십시오.

Python 2 전용 (원래 답변)

줄 끝 문자의 번역을 방지하려면 파일을 바이너리로 엽니 다.

f = open('file.txt', 'wb')

Python 매뉴얼 인용 :

Windows에서 모드에 ‘b’가 추가되면 바이너리 모드로 파일이 열리므로 ‘rb’, ‘wb’및 ‘r + b’와 같은 모드도 있습니다. Windows의 Python은 텍스트와 바이너리 파일을 구분합니다. 텍스트 파일의 줄 끝 문자는 데이터를 읽거나 쓸 때 자동으로 약간 변경됩니다. 파일 데이터에 대한 이러한 비하인드 수정은 ASCII 텍스트 파일에 적합하지만 JPEG 또는 EXE 파일과 같은 바이너리 데이터를 손상시킵니다. 이러한 파일을 읽고 쓸 때 바이너리 모드를 사용하는 데 매우주의하십시오. Unix에서는 모드에 ‘b’를 추가하는 것이 문제가되지 않으므로 모든 바이너리 파일에 대해 플랫폼 독립적으로 사용할 수 있습니다.


답변

현대적인 방법 : newline = ”사용

Unix 스타일 LF 줄 끝 종결자를 사용 newline=하려면 io.open () 에 키워드 매개 변수를 사용합니다 .

import io
f = io.open('file.txt', 'w', newline='\n')

이것은 Python 2.6 이상에서 작동합니다. Python 3에서는 대신 내장 open()함수의 newline=매개 변수를 사용할 수도 있습니다 io.open().

예전 방식 : 바이너리 모드

Python 3에서 작동하지 않는 줄 바꿈 변환을 방지하는 이전 방법은 줄 끝 문자의 변환을 방지하기 위해 파일을 바이너리 모드로 여는 것입니다 .

f = open('file.txt', 'wb')    # note the 'b' meaning binary

하지만 파이썬 3에서, 바이너리 모드는 읽을 바이트 가 아닌 문자를 당신이 원하는 일을하지 않도록. 스트림에서 문자열 I / O를 시도 할 때 예외가 발생할 수 있습니다. (예 : “TypeError : ‘str’은 버퍼 인터페이스를 지원하지 않습니다.”).


답변

파일을 열 때 바이너리 의사 모드를 사용해야합니다.

f = open('file.txt', 'wb')


답변