Python程序开发——第八章 文件
目錄
- 一、文件的打開和關閉
- (一)打開
- (二)關閉
- 二、讀取數據
- (一)read()方法
- (二)readline()方法
- (三)readlines()方法
- 三、寫入數據
- (一)write()方法
- (二)writelines()方法
- 四、定位讀取
- (一)獲取文件讀/寫位置
- (二)設置文件讀/寫位置
- 五、目錄
- (一)創建目錄
- (二)刪除目錄
- (三)獲取目錄下的文件列表
- 七、文件路徑
- (一)相對路徑和絕對路徑
- (二)os模塊中的關于路徑的函數
一、文件的打開和關閉
(一)打開
通過內置函數open()來打開一個文件,并返回文件對象,若無法被打開,則會拋出OSError。
open()函數的格式如下:
參數encoding設置文件的編碼格式,參數mode設置文件的打開模式,默認的文件訪問模式為只讀(r),比如下表文件打開模式:
| r | 只讀 | 以只讀的形式打開,若文件不存在或無法找到,則open()函數調用失敗 |
| w | 只寫 | 以只寫的形式打開,若文件已存在,則重寫文件,否則創建文件 |
| a | 追加 | 以只寫的形式打開,只允許在該文件末尾追加數據,若文件不存在,則創建文件 |
默認的模式為文本模式(不加后綴時),若要以二進制模式打開文件,則可在r、w、a后面加上 b ,即rb、wb、ab。
可以在后面加上“+”,表示以可讀或可寫的方式打開該文件,比如rb+,它表示在二進制模式下,以可讀或可寫的方式打開該文件。
(二)關閉
程序執行完畢后,系統會自動關閉由該程序打開的文件,由于打開的文件數量有限以及打開過多會占用系統資源,所以當文件使用完畢后主動關閉文件以釋放內存,tg1使用內置的close()方法關閉文件,該方法沒有參數。
調用格式如下:
二、讀取數據
(一)read()方法
通過read()方法從文件中讀取指定數據,該方法內size參數用于設置讀取數據的字節數,缺省情況下,讀取文件所有的數據。
創建了一個file1.text文件,在pythonProject項目下,其文本內容為“HELLO WORLD!”:
另在項目中創建一個名稱為test.py的python文件,下列為python代碼,打開并通過read()方法有參/無參讀取數據:
運行結果如下:
(二)readline()方法
readline()方法用于從文件中讀取一行數據。
file2.txt文件:
python文件:
# 讀取文件file2.txt中一行數據 get_data = open("file2.txt", mode="r", encoding="utf-8") print(get_data.readline()) get_data.close()運行結果如下:
(三)readlines()方法
readlines()方法用于一次讀取文件的所有內容,該方法會返回一個列表,文件中的每一行對應列表中的一個元素。
file2.txt文件:
python文件:
# 讀取文件file2.txt的所有內容 get_data = open("file2.txt", mode="r", encoding="utf-8") print(get_data.readlines()) get_data.close()運行結果如下:
三、寫入數據
(一)write()方法
通過write()方法用于向文件中寫入數據,若寫入數據成功,則該方法會返回寫入該文件的數據長度。
file1.txt文件:
python文件:
get_data = open("file1.txt", mode="w+", encoding="utf-8") print(get_data.write("hello python!")) get_data.close()運行結果如下,可看出本次寫入file1.txt文件的數據長度為13:
(二)writelines()方法
writelines()方法用于向文件中寫入字符串序列,可以是一個字符串列表。
file1.txt文件:
python文件:
get_data = open("file1.txt", mode="w+", encoding="utf-8") get_data.writelines(["python", "hello"]) get_data.close()file1.txt文件內容如下:
四、定位讀取
Python有用于獲取文件讀/寫位置的tell()方法和修改文件讀/寫位置的seek()方法。
(一)獲取文件讀/寫位置
通過tell()方法獲取文件的讀/寫位置。
file1.txt文件:
python文件,首先使用read()方法讀取文件中的兩個字節,然后通過tell()方法輸出文件讀取的位置:
get_data = open("file1.txt", mode="r", encoding="utf-8") print(get_data.read(2)) print(get_data.tell()) get_data.close()運行結果如下:
(二)設置文件讀/寫位置
通過seek()方法設置文件的讀/寫位置,通過移動文件讀取指針到文件的指定位置,它有兩個參數分別為:第一個參數為offset偏移量,表示讀/寫位置需移動的字節數;第二個參數為from指定文件的讀/寫位置,它的取值有0、1和2,分別表示在開始位置讀/寫、在當前位置讀/寫和在末尾位置讀/寫,默認情況下from值為0(即從文件開始位置讀/寫)。
file1.txt文件:
python文件:
get_data = open("file1.txt", mode="r", encoding="utf-8") get_data.seek(0) print(get_data.read()) get_data.seek(3) print(get_data.read()) get_data.seek(0, 0) print(get_data.read()) get_data.seek(5, 0) print(get_data.read()) get_data.close()運行結果如下:
五、目錄
(一)創建目錄
通過os模塊中的mkdir()函數創建目錄,函數內參數為目錄的名稱,另外還有參數mode表示目錄的數字權限。
python代碼:
創建成功,在項目欄中看到package0目錄:
也可以在PyCharm中直接通過項目創建目錄,右鍵項目,找到新建——目錄如下:
輸入目錄名稱,即可創建目錄:
創建完成后可以在項目欄看到所創建的目錄package2:
(二)刪除目錄
通過shutil模塊中的rmtree()函數可刪除目錄。
例如輸入一個目錄,首先通過os模塊中的exists()函數判斷該目錄是否存在,若存在則刪除該目錄,否則創建一個新目錄,python代碼如下:
運行結果如下:
項目欄中:
(三)獲取目錄下的文件列表
可以通過os模塊中的listdir()函數獲取目錄下的文件列表。
python代碼:
運行結果如下:
七、文件路徑
(一)相對路徑和絕對路徑
文件路徑分為相對路徑和絕對路徑,相對路徑是指一個文件或文件夾所在路徑與其它文件或文件夾的路徑關系,而絕對路徑是指從盤符(即磁盤區)到當前位置的路徑。
(二)os模塊中的關于路徑的函數
以下是幾個os模塊中常用的關于路徑的函數:
1、通過os模塊中的isabs()函數判斷文件或文件夾的路徑是否為絕對路徑,若為絕對路徑則返回True,否則返回False。
python代碼:
運行結果如下,可見兩個文件的路徑都是相對路徑:
2、通過os模塊中的abspath()函數規范化文件或文件夾路徑,即使用該函數將文件或文件夾的路徑規范化成絕對路徑。
python代碼,首先通過isabs()函數判斷其路徑為相對路徑,然后通過abspath()函數將該路徑轉換為絕對路徑:
運行結果如下:
3、通過os模塊中的getcwd()函數獲取當前路徑。
python代碼:
運行結果如下,輸出test.py文件的當前路徑:
4、通過os模塊中的exists()函數判斷路徑是否有效存在,若存在則返回True,否則返回False。
5、通過os模塊中join()函數拼接路徑,函數內的參數即要拼接的路徑,若其中要拼接的最后一個路徑為空,則拼接生成的路徑會以"\"結尾。
總結
以上是生活随笔為你收集整理的Python程序开发——第八章 文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web前端开发笔记——第四章 JavaS
- 下一篇: websocket python爬虫_p