1. 程式人生 > >Python io 模組 基礎總結

Python io 模組 基礎總結

IO,在計算機中值得input(輸入)/output(輸出),凡是用到資料交換的地方都會用到IO。
Stream(流) 是一種重要的概念,分為Input Stream(輸入流)和Output Stream(輸出流)。

開啟檔案:
open(name[,mode[,buffering]])

name:檔案路徑,強制引數
model:模式,可選引數

'r' #讀模式
'w' #寫模式
'a' #追加模式
'b' #而進位制模式,追加到其他模式中
'+' #讀/寫模式,追加到其他模式中 

buffering:緩衝區,可選引數

緩衝區引數為0,IO無緩衝,直接寫到硬碟上
緩衝區引數為1
,IO有緩衝,資料先寫到內容中,只有使用flush或者close 才會將資料更新到硬碟上 緩衝區引數為大於1,代表緩衝區的大小,單位為位元組 緩衝區引數為小於0,代表使用預設緩衝區大小

預設模式讀取模式,預設緩衝區為無

例:

file = open("ioText.txt",'r')
print file.read()
輸出:
Py io test!

當模式為r時,如果檔案不存在會報出異常
IOError: [Errno 2] No such file or directory: 'txt.txt'
當模式為w時,如果檔案不存在會自動建立。

檔案操作有可能會出現異常,所以為了程式的健壯性,需要使用try ….finally 來實現,來確保總會呼叫close方法,
如果沒有呼叫close方法,檔案物件會佔用作業系統物件,影響系統的io操作。

try:
    file = open("ioText.txt",'r')
    print file.read()
finally:
    if file:
        file.close()

Python 提供了一種簡單的寫法

with open("ioText.txt",'r') as file:
    print file.read()

檔案讀取:
read() #一次將檔案內容讀到記憶體
read(size) #一次最多讀size個位元組
readline() #每次讀取一行
readlines() #讀取所有內容並按行返回內容

檔案寫入:
write() #現將資料寫入記憶體中,系統空閒時寫入,呼叫close()完整寫入檔案


flush() #不斷將資料立即寫入檔案中

常用的檔案和目錄操作方法:
對檔案和目錄經常用到OS模組和shutil模組。
os.getcwd() 獲取當前指令碼的工作路徑
os.listdir() 返回指定目錄下的所有檔案和目錄名
os.remove(filepath) 刪除一個檔案
os.removedirs(path) 刪除多個目錄
os.path.isfile(filepath) 檢驗給出的路徑是否是一個檔案
os.path.isdir(filepath) 檢驗給出的路徑是否是一個目錄
os.path.isabs() 判斷是否是一個目錄
os.path.exists(path) 檢測是否有該路徑
os.path.split(path) 分離path的目錄名和檔名
os.path.splitext() 分離副檔名
os.path.dirname(path) 獲取路徑名
os.path.basename(path) 獲取檔名
os.getenv() 讀取環境變數
os.putenv() 設定環境變數
os.linesep 給出當前平臺使用的行終止符,win:\r\n linux:\n mac:\r
os.name 當前使用的平臺 win:nt linux/unix:posix
os.rename(old,new) 重新命名檔案或目錄
os.makedirs(path) 建立多級目錄
os.makedir(path) 建立單級目錄
os.stat(file) 獲取檔案屬性
os.chmod(file) 修改檔案許可權與時間戳
os.path.getsize(filename) 獲取檔案大小
os.rmdir(dir) 刪除空目錄
os.rmtree(dir) 刪除目錄
shutil.copytree(olddir,newdir) 複製資料夾
shutil.copyfile(oldfile,newfile) 複製檔案
shutil.move(oldpos,newpos) 移動檔案