파이썬의 파일 및 비정상 IO

파일 및 예외

 

읽기 및 텍스트 파일을 작성

텍스트 파일을 읽을 때 사용하는 것이 필요하다 open(상대 또는 절대 경로를 사용하여) 양호한 벨트 경로 파일명의 기능을 지정하고 파일 모드 설정 'r'(지정하지 않으면, 디폴트 값은 'r'다음) encoding(만약 부호화 파라미터를 지정할 파일을 읽는 것은 그것은 때문에하지 않을 수 있습니다,) 인코딩 매개 변수는 인코딩 방법이 동일 지정하는 경우 보장되지 않으므로 파일을 저장할 때 사용되는 인코딩 운영 체제의 기본 인코딩 인 경우 지정되지 않은, 기본값은 없음입니다, 다음 사용 디코딩 문자를 읽고 실패로 이어집니다. 다음의 예는 일반 텍스트 파일을 읽는 방법을 보여줍니다.

. (1)  DEF 주 () :
 2      F = 없음
 3.      은 try :
 . 4          F = 열기 ( ' 오크 .txt 인 ' , ' R & LT ' 인코딩 = ' . UTF-8 " )     #의 파일 경로 있습니다 
. (5)          인쇄 (도달 f.read () )
 6      제외 FileNotFoundError :           #의 예외 처리 
(7)          인쇄 ( ' 지정된 파일을 열 수 없습니다! ' )
 (8)      을 제외한 LookupError :
 9          인쇄 ( ' 알 수없는 코딩!' )
 (10)      를 제외하고 UnicodeDecodeError :
 11          인쇄 ( ' ! 오류를 디코딩 파일을 읽는 ' )
 (12)      최종적 :           # 마지막으로 특정 filally 문이 실행될, 심지어 문을 종료 할 시스템을 사용주의, 그는 여전히 때문에 수행 
13                                # 시스템이 비정상 종료로 간주 될 수있다 
(14)          IF F :
 15              f.close ()
 (16)  
. (17)  
(18)는  IF  __name__ == ' __main__ ' :
 . 19      주 ()        

 

 

파일을 읽을 수있는 또 다른 방법은 수동으로 자원을 닫을 필요가 없습니다 방법과 시도를 사용

. (1)  DEF 주 () :
 2      은 try :
 3.          열기 ( ' 오크 .txt 인 ' , ' R & LT ' 인코딩 = " UTF-8. ' F AS) :           # 가진 
. 4              인쇄 (도달 f.read ())
 . 5      제외한 FileNotFoundError :
 6          인쇄 ( ' ! 지정된 파일을 열 수 없습니다 ' )
 (7)      을 제외하고 LookupError :
 8          인쇄 ( ' 알 수없는 코드! ' )
 9      제외UnicodeDecodeError :
 10          인쇄 ( " 오류를 디코딩 파일을 읽는! ' )

 

 

파일 오브젝트를 사용하는 것 외에도 read파일을 읽는 방법 대신 사용될 수있다 for-in행 또는 환상 판독 행을 readlines용기 행 파일리스트를 판독하는 방법에있어서, 코드는 다음과 같다.

 

. (1)  오기 시간
 2  
. 3  
. 4  DEF 의 main ()
 . 5      # 일회용 파일의 전체 내용을 읽어 
6.      열기 (와 ' 오크 .txt 인 ' , ' R & LT ' 인코딩 = " UTF-8. ' ) F AS :
 . 7          전단 (F .read ())
 . (8)  
. 9      # 행씩 판독 피 루프 
10      열기 (와 ' 오크가 .txt " , MODE = " R & LT ' F AS)
 . (11)          에 대한 라인 에서 : F
 (12)는              프린트(라인은 종료 = '' )
 (13)는              time.sleep (0.5 )
 (14)      이 전단 ()
 15  
16      #은 목록에 판독 라인으로 파일 라인을 판독 
. 17      (개폐 ' 오크가 .txt ' :) F AS
 (18)는          라인 = F .readlines ()
 19      인쇄 (선)

 

 

참고 : 파일이 존재하지 않는 경우 읽기 모드, 'w'인 경우, 시스템이 자동으로 생성한다. 다른 모델은 예외를 던질 수있다

 

 

바이너리 파일 읽기 및 쓰기

여기 데모 복사 사진, 대상 파일의 복사본을 만들 필요가 없습니다, 시스템이 자동으로 생성됩니다

. (1)  DEF 주 () :
 2      은 try :
 . 3          열기 ( ' guido.jpg ' , ' RB ' FS1 AS) :   #의 여기 참고 RB (판독을위한 R, B, 이진 파일을 나타낸다) 
. (4)              데이터 fs1.read = ()          # 정상적으로 생략하면 텍스트 파일에 대한 시스템 기본값은 텍스트 파일을 읽을 
5.              인쇄 (유형 (데이터))   # <클래스 '바이트'> 
6.          열기 ( ' 귀도의 .JPG ' , ' WB ' ) FS2 같이
 . 7              FS2. (데이터를) 쓰기
 (8).      을 제외한 FileNotFoundError E AS :
. 9          인쇄 ( " 지정된 파일을 열 수 없습니다. " )
 (10)      를 제외한 IO 오류 E 같이
 . 11          인쇄 ( " . 에러 파일의 읽고 쓰기 ' )
 (12)는      인쇄 ( " 프로그램 실행이 종료한다. ' )
 (13)은  
14  
15  IF  __name__ == ' __main__ ' :
 16      주 ()

 

 

JSON 파일 읽기 및 쓰기

JSON 파일 샘플

1  {
 2      " 이름 " : " 骆昊" ,
 3      " 나이 " : 38 ,
 4      " QQ " : 957658 ,
 5      " 친구 " : [ " 王大锤" , " 白元芳" ,
 6      " 자동차 " : [
 7          { " 브랜드 " : " BYD " , "max_speed " : 180}
 8          { " 브랜드 " : " 오디 " , " max_speed " 280 }
 9          { " 브랜드 " : " 벤츠 " , " max_speed " 320 }
 10      ]
 (11) }

 

 

 JSON과 파이썬은 실제로 동일

우리는 파이썬 JSON 모듈은 파일에 사전 또는 목록 JSON 형식으로 저장할 수 있습니다 사용하는 코드는 다음과 같다. 

 1 import json   # 导入json库
 2 
 3 
 4 def main():
 5     mydict = {
 6         'name': '骆昊',
 7         'age': 38,
 8         'qq': 957658,
 9         'friends': ['王大锤', '白元芳'],
10         'cars': [
11             {'brand': 'BYD', 'max_speed': 180},
12             {'brand': 'Audi', 'max_speed': 280},
13             {'brand': 'Benz', 'max_speed': 320}
14         ]
15     }
16     try:
17         with open('data.json', 'w', encoding='utf-8') as fs:    
18             json.dump(mydict, fs)        # 有时候encoding='utf-8'会出错,删了就可以了
19     except IOError as e:                   # ensure_ascii=False 解决不出现中文
20         print(e)                              # json.dumps(mydict,ensure_ascii=False)
21     print('保存数据完成!')
22 
23 
24 if __name__ == '__main__':
25     main()                

 

 

 

json模块主要有四个比较重要的函数,分别是:

  • dump - 将Python对象按照JSON格式序列化到文件中
  • dumps - 将Python对象处理成JSON格式的字符串
  • load - 将文件中的JSON数据反序列化成对象
  • loads - 将字符串的内容反序列化成Python对象

  一般dump和load一起,dumps和loads一起。注意如果从文件中读取出来的话,type()类型为str,需要用load转换成对象.

  dumps和loads同理

 

 

读取网络数据

 1 import requests   # 需要导入requests模块
 2 import json
 3 
 4 
 5 def main():
 6     resp = requests.get('http://api.tianapi.com/guonei/?key=APIKey&num=10')
 7     data_model = json.loads(resp.text)     # 注意这里反序列化成对象
 8     for news in data_model['newslist']:
 9         print(news['title'])
10 
11 
12 if __name__ == '__main__':
13     main()

 

추천

출처www.cnblogs.com/cherrydream/p/11357417.html