程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python IO編程

編輯:Python

目錄

文件讀寫 

讀取文件

IOError異常處理

UnicodeDecodeError異常處理

寫文件

文件操作方法


文件讀寫 

       在磁盤上讀寫文件的功能都是由操作系統提供的,現代操作系統不允許普通的程序直接操作磁盤,所以,讀寫文件就是請求操作系統打開一個文件對象(通常稱為文件描述符),然後,通過操作系統提供的接口從這個文件對象中讀取數據(讀文件),或者把數據寫入這個文件對象(寫文件)。

讀取文件

使用Python內置的open()函數,傳入文件名和標示符,標識符'r'表示讀。

f=open('F:\eclipse\eclipse\sy9T3.txt','r')

文件不存在則會拋出FileNotFoundError。

成功打開文件後,調用read()方法一次性讀完文件的全部內容。

f.read();

最後調用close()方法關閉文件文件使用完畢後必須關閉,因為文件對象會占用操作系統的資源,並且操作系統同一時間能打開的文件數量也是有限的。

f.close()

為了避免文件內容過多,反復調用read(size)方法,每次最多讀取size個字節的內容。

其中readline()可以每次讀取一行內容,調用readlines()一次讀取所有內容並按行返回list

IOError異常處理

由於文件讀寫時都有可能產生IOError,一旦出錯,後面的f.close()就不會調用。所以,為了保證無論是否出錯都能正確地關閉文件,我們對異常提前進行處理:

方法一:

try...finally

try:
f = open('/path/to/file', 'r')
print(f.read())
finally:
if f:
f.close()

方法二:

引入with

with open('/path/to/file', 'r') as f:
print(f.read())

 第二種方法代碼更佳簡潔,並且不必調用f.close()方法。

UnicodeDecodeError異常處理

read()時可能會拋出UnicodeDecodeError(encoding不管是用utf8、gb2312、gbk編碼方式都不行)

解決辦法:

改為以二進制的方式讀取即可:open('xxx.xsl','rb')

​f=open('F:\eclipse\eclipse\sy9T3.txt','rb')
f.read()

寫文件

寫文件和讀文件是一樣的,唯一區別是調用open()函數時,傳入標識符'w'或者'wb'表示寫文本文件或寫二進制文件:

f=open('F:\eclipse\eclipse\sy.txt','w')
f.write("I love Python!")
f.close()

進行完上面的操作後,點開文件

注:1.只有調用close()方法時,操作系統才保證把沒有寫入的數據全部寫入磁盤。

       2.以'w'模式寫入文件時,如果文件已存在,會直接覆蓋(相當於刪掉後新寫入一個文件)。

可以傳入'a'以追加(append)模式寫入 追加到文件末尾

f=open('F:\eclipse\eclipse\sy.txt','a')
f.write("end")
f.close()

文件操作方法

方法作用r以只讀形式打開文件(默認值,可以省略),文件不存在時報錯w以只寫形式打開文件,文件不存在時,則創建文件,文件存在時會清除原有的文件;x文件不存在時新建文件並寫入,文件存在則報錯a如果文件存在,在文件末尾追加寫內容+打開文件用於更新,既可讀,也可寫,不能單獨使用,需和其他字符配合使用


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved