Python (Windows)을 사용하여 파일에 쓰고 Unix 줄 끝 문자를 사용하려면 어떻게해야합니까?
예 : 할 때 :
f = open ( 'file.txt', 'w') f.write ( '안녕하세요 \ n') f.close ()
파이썬은 자동으로 대체 \n
와 함께 \r\n
.
답변:
참조 : 현대적인 방법 : 바로이 페이지에서 newline = '' 대답을 사용 하십시오.
줄 끝 문자의 번역을 방지하려면 파일을 바이너리로 엽니 다.
f = open('file.txt', 'wb')
Python 매뉴얼 인용 :
Windows에서 모드에 'b'가 추가되면 바이너리 모드로 파일이 열리므로 'rb', 'wb'및 'r + b'와 같은 모드도 있습니다. Windows의 Python은 텍스트와 바이너리 파일을 구분합니다. 텍스트 파일의 줄 끝 문자는 데이터를 읽거나 쓸 때 자동으로 약간 변경됩니다. 파일 데이터에 대한 이러한 비하인드 수정은 ASCII 텍스트 파일에 적합하지만 JPEG 또는 EXE 파일과 같은 바이너리 데이터를 손상시킵니다. 이러한 파일을 읽고 쓸 때 바이너리 모드를 사용하는 데 매우주의하십시오. Unix에서는 모드에 'b'를 추가하는 것이 문제가되지 않으므로 모든 바이너리 파일에 대해 플랫폼 독립적으로 사용할 수 있습니다.
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'은 버퍼 인터페이스를 지원하지 않습니다.").
'\n'
직접 설정할 수 있습니다 . 이것은보다 명시 적이며 ''
읽기가 더 쉽다고 생각합니다.
'\n'
것이 ''
. 그러면 코드가 무엇을하는지 설명하기 위해 주석이 필요하지 않을 것입니다. :) 그러나 이것은 파일을 작성하는 경우에만 해당됩니다. 파일을 읽을 때 newline='\n'
와 완전히 동일하지 않습니다 newline=''
때문에, readlines()
만에 분할합니다 \n
전자의 경우뿐만으로 newline=''
는 보편적 인 줄 바꿈 처리를 할 수 있지만 여전히 여전히 데이터 파일에서 실제 개행 문자를 반환합니다. 제안 해 주셔서 감사합니다! 파이썬 테스트 프로그램
'\n'
이전에 전환 된 것과 동일한 것을 보는 것에 대해 약간 걱정한다면 유니 코드 코드 포인트를 사용할 수 있습니다 (인코딩이 utf-8 또는 다른 호환되는지 확인하십시오). with open('file.txt', 'w', encoding='utf-8', newline='\u000A')
; 추신 : 결과는 newline='\n'
버전과 다르지 않습니다 . 누군가가 더 많은 편안함을 원하는 경우입니다.