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)
移動檔案