Python基礎——檔案操作
文章目錄
一. 檔案操作的作用
總結:檔案操作的作用就是把一些內容(資料)儲存存放起來,可以讓程式下一次執行的時候直接使用,而不必重新制作一份,省時省力。
二. 檔案的基本操作
2.1 檔案操作步驟
注意:可以只開啟和關閉檔案,不進行任何讀寫操作。
2.1.1 開啟
在python,使用open函式,可以開啟一個已經存在的檔案,或者建立一個新檔案,語法如下:
open(name, mode)
name:是要開啟的目標檔名的字串(可以包含檔案所在的具體路徑)。
mode:設定開啟檔案的模式(訪問模式):只讀、寫入、追加等。
2.1.1.1 開啟檔案模式
模式 | 描述 |
---|---|
r | 以只讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。 |
rb | 以二進位制格式開啟一個檔案用於只讀。檔案指標將會放在檔案的開頭。這是預設模式。 |
r+ | 開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。 |
rb+ | 以二進位制格式開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。 |
w | 開啟一個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。 |
wb | 以二進位制格式開啟一個檔案只用於寫入。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。 |
w+ | 開啟一個檔案用於讀寫。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。 |
wb+ | 以二進位制格式開啟一個檔案用於讀寫。如果該檔案已存在則開啟檔案,並從開頭開始編輯,即原有內容會被刪除。如果該檔案不存在,建立新檔案。 |
a | 開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。 |
ab | 以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。 |
a+ | 開啟一個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。 |
ab+ | 以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。 |
2.1.1.2 快速體驗
f = open('test.txt', 'w')
注意:此時的
f
是open
函式的檔案物件。
2.1.2 檔案物件方法
2.1.2.1 寫
- 語法
物件物件.write('內容')
- 體驗
# 1. 開啟檔案
f = open('test.txt', 'w')
# 2.檔案寫入
f.write('hello world')
# 3. 關閉檔案
f.close()
注意:
w
和a
模式:如果檔案不存在則建立該檔案;如果檔案存在,w
模式先清空再寫入,a
模式直接末尾追加。r
模式:如果檔案不存在則報錯。
2.1.2.2 讀
- read()
檔案物件.read(num)
num表示要從檔案中讀取的資料的長度(單位是位元組),如果沒有傳入num,那麼就表示讀取檔案中所有的資料。
- readlines()
readlines可以按照行的方式把整個檔案中的內容進行一次性讀取,並且返回的是一個列表,其中每一行的資料為一個元素。
f = open('test.txt')
content = f.readlines()
# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']
print(content)
# 關閉檔案
f.close()
- readline()
readline()一次讀取一行內容。
f = open('test.txt')
content = f.readline()
print(f'第一行:{content}')
content = f.readline()
print(f'第二行:{content}')
# 關閉檔案
f.close()
2.1.2.3 seek()
作用:用來移動檔案指標。
語法如下:
檔案物件.seek(偏移量, 起始位置)
起始位置:
- 0:檔案開頭
- 1:當前位置
- 2:檔案結尾
2.1.3 關閉
檔案物件.close()
三. 檔案備份
需求:使用者輸入當前目錄下任意檔名,程式完成對該檔案的備份功能(備份檔名為xx[備份]字尾,例如:test[備份].txt)。
3.1 步驟
- 接收使用者輸入的檔名
- 規劃備份檔名
- 備份檔案寫入資料
3.2 程式碼實現
- 接收使用者輸入目標檔名
old_name = input('請輸入您要備份的檔名:')
-
規劃備份檔名
2.1 提取目標檔案字尾
2.2 組織備份的檔名,xx[備份]字尾
# 2.1 提取檔案字尾點的下標
index = old_name.rfind('.')
# print(index) # 字尾中.的下標
# print(old_name[:index]) # 原始檔名(無字尾)
# 2.2 組織新檔名 舊檔名 + [備份] + 字尾
new_name = old_name[:index] + '[備份]' + old_name[index:]
# 列印新檔名(帶字尾)
# print(new_name)
-
備份檔案寫入資料
3.1 開啟原始檔 和 備份檔案
3.2 將原始檔資料寫入備份檔案
3.3 關閉檔案
# 3.1 開啟檔案
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')
# 3.2 將原始檔資料寫入備份檔案
while True:
con = old_f.read(1024)
if len(con) == 0:
break
new_f.write(con)
# 3.3 關閉檔案
old_f.close()
new_f.close()
3.3 思考
如果使用者輸入.txt
,這是一個無效檔案,程式如何更改才能限制只有有效的檔名才能備份?
答:新增條件判斷即可。
old_name = input('請輸入您要備份的檔名:')
index = old_name.rfind('.')
if index > 0:
postfix = old_name[index:]
new_name = old_name[:index] + '[備份]' + postfix
old_f = open(old_name, 'rb')
new_f = open(new_name, 'wb')
while True:
con = old_f.read(1024)
if len(con) == 0:
break
new_f.write(con)
old_f.close()
new_f.close()
四. 檔案和資料夾的操作
在Python中檔案和資料夾的操作要藉助os模組裡面的相關功能,具體步驟如下:
- 匯入os模組
import os
- 使用
os
模組相關功能
os.函式名()
4.1 檔案重新命名
os.rename(目標檔名, 新檔名)
4.2 刪除檔案
os.remove(目標檔名)
4.3 建立資料夾
os.mkdir(資料夾名字)
4.4 刪除資料夾
os.rmdir(資料夾名字)
4.5 獲取當前目錄
os.getcwd()
4.6 改變預設目錄
os.chdir(目錄)
4.7 獲取目錄列表
os.listdir(目錄)
五.應用案例
需求:批量修改檔名,既可新增指定字串,又能刪除指定字串。
- 步驟
- 設定新增刪除字串的的標識
- 獲取指定目錄的所有檔案
- 將原有檔名新增/刪除指定字串,構造新名字
- os.rename()重新命名
- 程式碼實現
import os
# 設定重新命名標識:如果為1則新增指定字元,flag取值為2則刪除指定字元
flag = 1
# 獲取指定目錄
dir_name = './'
# 獲取指定目錄的檔案列表
file_list = os.listdir(dir_name)
# print(file_list)
# 遍歷檔案列表內的檔案
for name in file_list:
# 新增指定字元
if flag == 1:
new_name = 'Python-' + name
# 刪除指定字元
elif flag == 2:
num = len('Python-')
new_name = name[num:]
# 列印新檔名,測試程式正確性
print(new_name)
# 重新命名
os.rename(dir_name+name, dir_name+new_name)
相關文章
- python 檔案操作的基礎總結Python
- Python基礎入門(9)- Python檔案操作Python
- Spark基礎-Scala檔案操作Spark
- 檔案IO中基礎操作
- Python基礎知識之檔案的讀取操作Python
- 29-檔案物件基礎操作物件
- python 基礎之檔案Python
- Python基礎 - 檔案拷貝Python
- Python基礎 - 檔案和流Python
- Python基礎知識_第10節_檔案操作(IO技術)Python
- python基礎操作Python
- FastAPI基礎之 表單和檔案操作ASTAPI
- 【C++基礎】檔案流讀寫操作C++
- linux 檔案屬性及基礎操作Linux
- [Python基礎]字串操作Python字串
- Python基礎知識詳解 從入門到精通(六)檔案操作Python
- python語言基礎 - day12~13 模組包以及檔案操作Python
- 『無為則無心』Python基礎 — 41、Python中檔案的讀寫操作(一)Python
- 『無為則無心』Python基礎 — 42、Python中檔案的讀寫操作(二)Python
- Python操作檔案Python
- python檔案操作Python
- 基礎篇- 沙盒以及檔案的操作和存取
- python基礎(三)——操作列表Python
- 零基礎學習 Python 之檔案Python
- 【Python基礎】Python處理Excel檔案,進行篩選資料、排序等操作及儲存新的Excel檔案PythonExcel排序
- Python的檔案操作Python
- python 操作整理檔案Python
- 1.4.0 Python檔案操作Python
- Python 檔案操作(一)Python
- python_檔案操作Python
- Python檔案的操作Python
- Python檔案操作題Python
- Python零基礎學習筆記(三十二)——list/tuple/dict/set檔案操作Python筆記
- 『無為則無心』Python基礎 — 44、對檔案和資料夾的操作Python
- (Python基礎教程之十二)Python讀寫CSV檔案Python
- Linux基礎學習——檔案基礎Linux
- [Python]學習基礎篇:檔案和目錄Python
- PHP基礎---檔案包含PHP