2012-03-01 2 views
9

신참 질문. Python 2.7.2.에서 우연히 일부 제어 문자가 포함 된 것으로 보이는 텍스트 파일을 읽는 데 문제가 있습니다. 그것은 SUB 문자 (아스키 16 진 코드의 1A)를 포함하는 행을 가로 질러 온다 특히, 루프파이썬에서 SUB 넘어서 읽는 라인

for line in f

즉시 경고 나 오류없이 중단됩니다. f.readlines()을 사용할 때 결과는 동일합니다. 기본적으로 파이썬에 관한 한, 파일은 첫 번째 SUB 문자가 발생하자마자 완료되고, 마지막 값인 line은 그 문자까지의 라인입니다.

하나가 발생하면 이러한 문자를 넘어 읽기 및/또는 경고를 발행하는 방법이 있나요? 바이너리 모드로 파일을 열

답변

8

는 파일 끝 문자입니다. 당신은 과거를 얻을하기 위해 바이너리 모드로 파일을 열어야합니다 :

f = open(filename, 'rb') 

단점이 라인 지향 특성을 잃고 라인을 직접 분할해야 할 것입니다 :

lines = f.read().split('\r\n') # assuming Windows line endings 
+1

리눅스 라인 엔딩은'lines = f.read(). split ('\ n')' –

6

보십시오 : Windows 시스템 0x1a

f = open(filename, 'rb') 
+3

을 천 번 감사드립니다. –

관련 문제