檔案操作
檔案讀寫
- 語法:open(file, mode, encoding)
- 引數:file —— 檔案所在位置(相對路徑、絕對路徑) mode —— 操作檔案的模式 encoding —— 檔案的編碼格式
- 相對路徑:基于目前的路徑獲取
- 絕對路徑:一個完整的路徑
- 操作檔案的模式:r-讀 w-寫 a-追加
| 模式 | 描述 |
|---|---|
| r | 以只讀方式打開檔案,檔案的指標將會放在檔案的開頭,這是默認模式, |
| rb | 以二進制格式打開一個檔案用于只讀,檔案指標將會放在檔案的開頭,這是默認模式,一般用于非文本檔案如圖片等, |
| r+ | 打開一個檔案用于讀寫,檔案指標將會放在檔案的開頭, |
| rb+ | 以二進制格式打開一個檔案用于讀寫,檔案指標將會放在檔案的開頭,一般用于非文本檔案如圖片等, |
| w | 打開一個檔案只用于寫入,如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有內容會被洗掉,如果該檔案不存在,創建新檔案, |
| wb | 以二進制格式打開一個檔案只用于寫入,如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有內容會被洗掉,如果該檔案不存在,創建新檔案,一般用于非文本檔案如圖片等, |
| w+ | 打開一個檔案用于讀寫,如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有內容會被洗掉,如果該檔案不存在,創建新檔案, |
| wb+ | 以二進制格式打開一個檔案用于讀寫,如果該檔案已存在則打開檔案,并從開頭開始編輯,即原有內容會被洗掉,如果該檔案不存在,創建新檔案,一般用于非文本檔案如圖片等, |
| a | 打開一個檔案用于追加,如果該檔案已存在,檔案指標將會放在檔案的結尾,也就是說,新的內容將會被寫入到已有內容之后,如果該檔案不存在,創建新檔案進行寫入, |
| ab | 以二進制格式打開一個檔案用于追加,如果該檔案已存在,檔案指標將會放在檔案的結尾,也就是說,新的內容將會被寫入到已有內容之后,如果該檔案不存在,創建新檔案進行寫入, |
| a+ | 打開一個檔案用于讀寫,如果該檔案已存在,檔案指標將會放在檔案的結尾,檔案打開時會是追加模式,如果該檔案不存在,創建新檔案用于讀寫, |
| ab+ | 以二進制格式打開一個檔案用于追加,如果該檔案已存在,檔案指標將會放在檔案的結尾,如果該檔案不存在,創建新檔案用于讀寫, |
- 常用編碼格式:utf-8 gbk gb2312
讀寫操作方法
| 模式 | 介紹 |
|---|---|
| read(s) | 不填寫s就讀取所有檔案內容,填寫讀取指定長度資料 |
| write() | 寫入字串或進制檔案 |
| writelines() | 寫入以串列保存的字串或進制檔案 |
| readline() | 以行讀取資料 |
| readlines() | 讀取所有資料存放串列 |
只寫模式w
- **f.writable() ** --> 判斷是否可寫
- **f.write(str) ** --> 寫入內容,回傳值為寫入字串的長度
- **f.writelines(seq) ** --> 寫入多行,但需要自己添加換行符
注意:
- w模式,當檔案不存在時創建檔案
- 再次寫入會覆寫
f = open('filetest.txt', mode='w', encoding='utf-8')
# 判斷是否可寫
print(f.writable())
# 寫入內容
f.write('i am yueyue\nasdasda\n')
# 寫入多行
f.writelines('I love You\nasdasdasdsad')
# 關閉檔案
f.close()
追加模式a
注意:
- a模式,當檔案不存在時創建檔案
- 再次寫入為追加
f = open('filetest.txt', mode='a', encoding='utf-8')
# 判斷是否可寫
print(f.writable())
# 寫入內容
f.write('i am yueyue\nasdasda\n')
# 寫入多行
f.writelines('I love You\nasdasdasdsad')
# # 關閉檔案
f.close()
w 和 a 模式:如果檔案不存在則創建該檔案;如果檔案存在,w 模式先清空再寫入,a 模式直接末尾追加,
只讀模式r
- f.readable() --> 判斷是否可讀,回傳值為布爾
- f.read(n) --> 讀取全部,在python3中n為字符
- f.readline() --> 逐行讀取,包括\n
- f.readlines() --> 讀取所有,回傳值為串列,包括\n
- **f.tell() **--> 檔案指標所處檔案位置
- **seek() --> **作用:用來移動檔案指標
f = open('filetest.txt', mode='r', encoding='utf-8')
# 判斷是否可讀
print(f.readable())
# 逐行讀取
print(f.readline(),end='')
# 讀取所有 回傳值為串列
print(f.readlines())
# # 讀取檔案全部內容
print(f.read())
1)tell的使用
f = open("filetest.txt", mode="r", encoding="utf-8")
'''
filetest2.txt
helloworld
你好
'''
# 漢字代表三個位元組 換行代表兩個位元組 字母數字代表的是一個位元組
print(f.tell())
print(f.readline(), end="")
print(f.tell())
print(f.readline())
print(f.tell())
2)seek的使用
f = open("filetest.txt", mode="rb")
'''
filetest2.txt
helloworld
你好
'''
# 改變指標位置
"""
offset: 偏移量
whence: 0 從檔案頭開始 1 當前位置開始 2 檔案尾
注意,當offset值非0時,Python要求檔案必須要以二進制格式打開,
否則會拋出 io.UnsupportedOperation 錯誤,
"""
print(f.tell())
# 讀取一個位元組,檔案指標自動后移1個資料
print(f.read(1))
print(f.tell())
# 將檔案指標從檔案開頭,向后移動到 5 個字符的位置
f.seek(5)
print(f.tell())
print(f.read(1))
# 將檔案指標從當前位置,向后移動到 5 個字符的位置
f.seek(5, 1)
print(f.tell())
print(f.read(1))
# 將檔案指標從檔案結尾,向前移動到距離1個字符的位置
f.seek(-1, 2)
print(f.tell())
print(f.read(1))
檔案備份
需求:用戶輸入當前目錄下任意檔案名,程式完成對該檔案的備份功能(備份檔案名為xx備份后綴,例如:test備份.txt)
- 接收用戶輸入的檔案名
- 規劃備份檔案名
- 備份檔案寫入資料
代碼實作
A、接收用戶戶輸入目標檔案名
1、提取目標檔案后綴
2、組織備份的檔案名,xx備份.后綴
old_name = input("請輸入檔案名:")
index = old_name.rfind(".") # rfind()函式從右開始找元素所在索引位置
new_name = old_name[:index]+"備份"+old_name[index:]
B、備份檔案寫入資料
1、打開源檔案 和 備份檔案
2、將源檔案資料寫?備份檔案
3、關閉檔案
old_name = input("請輸入檔案名:")
index = old_name.rfind(".")
new_name = old_name[:index]+"備份"+old_name[index:]
# 老檔案
old_f = open(old_name,"r")
# 新檔案
new_f = open(new_name,"w")
cont = old_f.readlines()
print(cont)
new_f.writelines(cont)
old_f.close()
new_f.close()
檔案夾操作
| 模塊.函式 | 介紹 |
|---|---|
| os.rename() | 重命名檔案或者檔案夾 |
| os.remove() | 洗掉檔案 |
| os.mkdir() | 創建檔案夾 |
| os.makedirs() | 以遞回方式創建多個檔案夾 |
| os.rmdir() | 洗掉檔案夾(空檔案夾) |
| os.removedirs() | 以遞回方式洗掉多個空檔案夾 |
| os.getcwd() | 獲取當前路徑 |
| os.chdir() | 改變默認?錄 |
| os.listdir() | 獲取檔案中的檔案 |
| os.path.exists() | 判斷該路徑下的檔案或檔案夾是否存在 |
| os.path.join() | 拼接路徑 |
| shutil.copy() | 復制檔案 |
| shutil.rmtree() | 把檔案和內容全部洗掉 |
批量重命名
檔案夾添加字串
import os
# 先切換路徑
os.chdir('testsad')
print(os.getcwd())
# 遍歷此路徑下的檔案
file_list = os.listdir(os.getcwd())
print(file_list)
for file in file_list:
# 回圈拼接
new_name = "python_" + file
# print(new_name)
os.rename(file,new_name)
本文來自博客園,作者:大-鍋,轉載請注明原文鏈接:https://www.cnblogs.com/daguo118/p/17316006.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/549961.html
標籤:Python
