1. 程式人生 > >26-Python檔案操作

26-Python檔案操作

1.檔案介紹

資料存放的容器
檔案的作用
	永續性的儲存資料內容
檔案組成
	檔名
		如果是同級目錄下, 不允許同名檔案存在
	副檔名
		.jpg
		.avi
		.doc
		.xls
		.html
		...
		注意
			一般不同的副檔名, 對應著不同的檔案格式
			不同的檔案格式, 有著不同的儲存約定, 方便程式處理
	檔案內容
		文字檔案
			txt
			doc
			xls
			...
		二進位制檔案
			圖片
			視訊
			音樂
			...

2.檔案的使用流程

	開啟
		open("檔案","模式")
			檔案
				指定檔案路徑
			模式
				控制操作模式
		模式
			r
				以只讀方式開啟檔案
					這是預設模式
				檔案的指標將會放在檔案的開頭
				注意:
					檔案不存在, 會報錯
			w
				以只寫方式開啟檔案
				檔案的指標將會放在檔案的開頭
					所以, 寫入的新內容, 會覆蓋舊的內容
				注意
					檔案不存在, 會自動建立一個新檔案
			a
				以追加方式(只寫)開啟檔案
				檔案的指標將會放在檔案結尾
					所以, 寫入的內容, 會新增到檔案末尾
				注意
					檔案不存在, 會自動建立一個新檔案
			增加b
				rb
				wb
				ab
				以二進位制格式進行操作檔案讀寫
					如果檔案是二進位制檔案, 則選擇此項
					例如
						圖片
						視訊
						音訊
						...
			增加+
				r+
					1. r
					2. 寫 和 w
				w+
				a+
				rb+
				rw+
				ra+
				代表都是以 "讀寫模式" 進行開啟
					其他特性基本和 + 前面的模式一致
					但是關於部分操作, 有細節區別
				作業:
					自己做測試, 驗證區別
	讀寫
		定位
			f.seek(偏移量,[0,1,2])
				0
					開頭
						預設
				1
					當前位置
				2
					檔案末尾
				注意
					文字檔案的操作模式下(不帶b)
						只能寫0
					如果想要寫1/2, 必須在二進位制檔案操作模式下(帶b)
			f.tell()
				檢視當前位置
		讀
			f.read(位元組數)
				位元組數預設是檔案內容長度
				下標會自動後移
			f.readline([limit])
				讀取一行資料
				limit
					限制的最大位元組數
			f.readlines()
				會自動的將檔案按換行符進行處理
				將處理好的每一行組成一個列表返回
			for in
				可以直接遍歷 f 本身
				也可以遍歷行列表
			判定是否可讀
				.readable()
			注意
				一般檔案特別大的時候, 可以使用readline方法
					按行載入, 可節省記憶體
					但相比於其他兩個讀取方法, 效能較低
				其他兩個方法, 一次性讀取檔案所有內容
					雖然佔用記憶體
					但處理效能比較高
		寫
			f.write("內容")
				返回值是寫入的位元組長度
			判定是否可寫
				.writeable()
	關閉
		f.close()
			關閉檔案
			為什麼需要關閉?
				開啟狀態, 會佔用系統資源
				會把緩衝區內容清空到磁碟檔案中
		補充
			f.flush()
			清空緩衝區內容到磁碟檔案中

3.檔案的相關操作

	模組
		import os
	資訊獲取操作
		.closed
			返回true如果檔案已被關閉,否則返回false
		.name
			返回檔案的名稱
	其他操作
		重新命名
			os.rename(‘old_name’, 'new_name')
		刪除
			os.remove('檔名')
		建立資料夾
			os.mkdir("資料夾名稱")
		獲取當前目錄
			os.getcwd()
		改變預設目錄
			os.chdir("目標目錄")
		獲取目錄列表
			os.listdir("./")

4.案例

	檔案的複製
		大檔案處理
	批量重新命名

學習地址:

撩課-Python大資料+人工智慧1
撩課-Python大資料+人工智慧2
撩課-Python大資料+人工智慧3
撩課-Python大資料+人工智慧4
撩課-Python大資料+人工智慧5
撩課-Python大資料+人工智慧6
撩課-Python-GUI程式設計-PyQt5