파이썬 학습 노트 (11) 파일 작업

먼저, 파일을 읽을


 

가장 일반적인 파일 읽기 및 IO 작업을 쓰기입니다. 파이썬 내장 함수 파일 사용을 읽고 쓸 수, C는 호환됩니다.

파일을 읽고 쓰기 전에, 우리가 먼저 운영 체제에서 제공하는 읽기 및 디스크 기능에 파일을 작성,보고 있고, 현대 운영 체제는 읽고을 열고 운영 체제를 요청하는 파일을 작성, 직접 디스크에 프로그램의 정상적인 작동을 허용하지 않습니다 (통상 파일 디스크립터로 지칭) 파일 객체는 그 운영체제에 의해 제공되는 인터페이스는이 파일 개체에서 (파일 읽기) 데이터를 판독 또는 파일 오브젝트 (기록 파일)에 데이터를 기록.

파일 객체를 읽기 모드로 파일을 열려면, 사용하는 내장 파이썬 open()기능, 파일 이름과 ID를 통과 :

>>> f = open('/Users/michael/test.txt', 'r')

우리가 성공적으로 파일을 열 수 있도록 읽기 식별자 'R',.

열기 = F (R & LT ' C : Users (사용자) \ \ wuzongmei \ 바탕 화면 \의 name.txt ' , ' R & LT ' ) 파일 번호의여 
파일 = # 파일의 전체 내용을 읽을 수 f.read ()에 도달, 그리고 변수 파일에 복사 
인쇄 (파일) # 인쇄는 파일의 내용을 읽어 
f.close ()를 # 파일을 닫습니다

파일을 읽고 쓸 때이 발생할 수 있기 때문에 IOError, 오류하면, 후자가 f.close()호출되지 않습니다. 따라서, 오류가 파일을 제대로 닫을 수 있는지 여부를 확인하기 위해, 우리는 사용할 수 있습니다 try ... finally달성하기 위해 :

시도 : 
    F = 개방 ( ' / 경로 /로는 / 파일 ' , ' R ' ) 
    인쇄 (f.read ()) 
마지막을 :
     경우 F : 
        f.close ()를

그러나 너무 복잡의 모든 너무 현실적인, 그래서, 파이썬은 도입 with자동으로 우리가 전화하는 데 도움 문 close()방법 :

오픈 (과 ' / 경로에 /이 / 파일 ' , ' R ' ) 로서 F : 
    인쇄 (f.read ())

 

### f.read 和 f.readline readlines도

f.read () 호출은 read()파일이 너무 안전을 위해, 버스트하기 10G 메모리가있는 경우, 반복적으로 호출 할 수 있습니다, 한 번 파일의 전체 내용을 읽을 read(size)방법을, 각 콘텐츠의 크기 바이트까지 읽어 보시기 바랍니다.

f.readline () 호출은 readline()내용의 각 라인을 읽을 수 있습니다

f.readlines는 () 호출 readlines()시간은 선하고 Return 키를 누릅니다의 모든 내용을 읽을 수 있습니다 list.

for line in f.readlines():
    print(line.strip()) # 把末尾的'\n'删掉

권장 사항 : 파일이 작은 경우, read()한 번 가장 편리한 독서, 당신은 파일 크기를 확인할 수없는 경우 반복적으로 호출 read(size)안전;,이 구성 파일 인 경우 호출 readlines()가장 편리한을

 

### 바이너리 파일을 읽고

기본값은 읽을 수있는 텍스트 파일의 앞에 말하기, UTF-8 인코딩 된 텍스트 파일입니다. 등 사진, 비디오, 바이너리 파일을 읽으려면 으로 'rb'금형 될 수있는 파일 형식을 열 수를 :

F = 오픈 >>> ( ' /Users/michael/test.jpg ' , ' RB ' )
 >>> 도달 f.read () 
B ' \ XFF \ xd8 \ XFF XE1 \ xOO \ x18Exif \ xOO \ xOO \ .. . ' # 바이트 16 진수 표현

 

### UTF-8이 아닌 파일을 읽고

비 UTF-8 인코딩 된 텍스트 파일을 판독하기 위해서는 필요하다 open()함수 전달 encoding파라미터를 들어, GBK 인코딩 된 파일을 읽는다

>>> F = 개방 ( ' /Users/michael/gbk.txt ' , ' R ' = 코딩 ' GBK를 ' )
 >>> f.read ()
 ' 测试'

일부 비표준 코딩 당신은 발생할 수있는, 파일을 발견 UnicodeDecodeError텍스트 파일의 불법 문자 인코딩의 일부와 혼합 될 수 있기 때문에. 이러한 경우, open()또 수신하는 기능 번째 errors파라미터를 부호화 에러 처리가 발생한 경우에 어떻게 보여. 가장 쉬운 방법은 단순히 무시하는 것이다 :

>>> F = 개방 ( ' /Users/michael/gbk.txt ' , ' R ' = 코딩 ' GBK를 ' 오류 = ' 무시 ' )

 

파일 작업 구덩이가 발생 읽기 :

   F = 개방 ( 'C : \ 사용자 \ wuzongmei \ 화상 \의 name.txt', 'R')

하나의 문제 : 파일 열기 오류 :립니다 \의 UXXXXXXXX 탈출 : (유니 코드 오류) 'unicodeescape'코덱의 위치는 2-3 바이트를 디코딩 할 수 있습니다

나중에 우리는 발견 :

파이썬에서  \는  이스케이프 문자 U는 \ 다음 유니 코드 인코딩을 나타내는, 그래서 사용자가 문자열 전에 추가, 여기에 주어집니다 \  (기본 문자열을 rawstring) R 충돌 파이썬 정규 표현식 구문을 방지하기 위해, !

解决 : (: \ 사용자 \ wuzongmei \ 바탕 화면 \의 name.txt ','R 'r'C) = 개방 F

질문 2 : 오류를 계속하려면 다시 실행 OSError : [errno를 22] 잘못된 인수 : '\ u202aC : \\ 사용자 \\ wuzongmei \\ 바탕 화면 \\ name.txt

나는 경로 / U 리드가 있다고 의심하기 시작하고, 오랜 시간이 해결책을 찾기위한 경로가 나는, 단순히 다른 복사본 경로에 한 장소에서 쓰기 속성의 보안 파일을 통해 직접 탭을 복사하기 때문에, 바람직하게는 직접 해결책을 찾기 위해 \ u202a 검색 또는 수동으로 해결 다시 입력합니다.

질문 세 : 파일이 존재하지 않습니다FileNotFoundError: [Errno 2] No such file or directory: '/Users/michael/notfound.txt'

 

둘째, 파일을 작성


 

파일을 작성하고 문서를 읽을 것이 유일한 차이점은 호출 즉, 동일한 open()식별자를 전달하는 기능을 'w'또는 'wb'텍스트 파일을 작성하거나 바이너리 파일을 작성 나타냅니다 :

F = 개방 (R ' C : \ 사용자 \ wuzongmei \ 바탕 화면 \의 name.txt ' , ' w ' ) 
f.write ( ' 안녕하세요 세계 ' ) 
f.close ()

당신은 반복적으로 호출 할 수있는 write()파일에 쓸 것이 아니라, 호출해야합니다 f.close()파일을 닫습니다. 우리가 파일을 작성하는 경우, 운영 체제는 종종 즉시 디스크에 데이터를 쓸 수 있지만 메모리, 자유 시간에 캐시 한 후 천천히 쓰지 않는다. 만 호출 close()방법은 운영 체제가 데이터가 모든 디스크에 기록 작성되지 않도록 때. 전화를 잊어 close()결과는 디스크에 기록 할 수있는 데이터의 일부이며, 나머지는 손실됩니다. 그래서, 아직 사용은 with더 보험 문은 다음과 같습니다

개방와 (R ' C : \ 사용자 \ wuzongmei 바탕 화면 \의 name.txt \ ' , ' w ' ) F : 
    f.write ( ' 안녕하세요, 세계! ' )

특정 텍스트 파일 인코딩을 쓰려면 주세요 open()전달 기능 encoding파라미터가 자동으로 문자열 지정된 인코딩으로 변환됩니다.

신발은 세 심하게 배려 찾을 'w'파일이 이미 존재하는 경우, 그것은 직접 (파일을 삭제하는 새 게시물에 해당 쓰기) 다룰 것입니다, 파일 모드에 기록 할 때. 우리는 파일의 끝에 추가하려면 어떻게 할까?

그것은 전달할 수 있습니다 'a'APPEND (추가) 모드에 작성합니다.

 

추천

출처www.cnblogs.com/wuzm/p/11562857.html