一、文件權限
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。如果文件不存在,則報錯
w 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。寫入的內容必須爲字符串
a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
rb 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。
wb 以二進制格式打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
ab 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
w+ 打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
rb+ 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。
wb+ 以二進制格式打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
ab+ 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。
二、文件指針
1、 r 和 w 模式打開文件,文件指針在文件起始位置。
2、a 打開文件,文件指針在末尾
3、對文件進行任何讀寫操作,都會改變文件指針位置
4、unix/linux換行爲\n,mac換行爲\r,windows換行爲\r\n
5、f.tell() 返回當前指針的讀寫設置,是當前位置距離文件開頭的位置
6、f.seek(offset , whence)
offset:偏移量,偏移距離whence指定位置的偏移量
whence:(0,1,2)0表示文件開頭,1表示當前位置,2表示文件結尾位置。 1和2只能在二進制下使用
三、文件操作
1、文件的打開
f = open(filename, 文件權限,encoding="utf-8")
2、文件的關閉
f.close()
3、f.write(字符串)
文件寫數據,如果文件不存在那麼創建文件,如果存在,先清空,然後寫入數據。
4、①details = f.read(num)
文件讀數據,num表示讀取數據的長度(字節),如果不傳入num,就全部讀取
如果使用讀了多次,那麼後面讀取的數據是從上次讀完後的位置開始的。
②details = f.readline()
一行一行的讀取,
③details = f.readlines()
讀取所有數據,返回一個列表,每一行爲列表的一個元素
5、f.flush()
文件緩衝區的處理,將緩衝區的文件寫入磁盤裏,不清空緩衝區,也不需要關閉文件。
6、文件信息處理
①f.encoding 顯示文件用的編碼
②f.name 獲得文件的名字
③f.mode 獲得文件的權限
④f.closed 返回bool。判斷文件是否關閉
7、上下文管理器
with open("xxxxx.txt", "r+") as f: 打開文件,寫入,不用關閉
f.write("python")
四、文件目錄操作(import os模塊)
1、 path = os.getcwd()
返回當前文件所在的絕對路徑。
2、 路徑:
①絕對路徑:從磁盤根目錄開始,到指定文件的完整路徑
②相對路徑:相對於某個目錄的路徑,cd ..表示上一級目錄
3、 os.path.exists(“dirname”)
判斷某個文件是否存在,返回bool
4、 os.remove()
刪除指定文件。
5、 os.rmdir()
刪除指定文件夾
6、 os.rename(oldname,newname)
給指定文件或者文件夾重命名
7、 os.listdir(指定目錄)
獲取指定目錄下的所有文件,返回一個列表
8、 os.mkdir()
創建一個文件夾
9. os.makedirs(test\test\test)
創建多個目錄,遞歸創建目錄
10、os.chdir()
改變默認目錄
五、任意文件的拷貝
import os
#輸入你要備份的文件名
dir_name = input("請輸入你要備份的文件名:")
path = os.getcwd(dir_name)
if os.path.exists(dir_name):
pass
else:
print("該文件不在指定路徑。")
#新的文件夾名字
#判斷後綴
location = dir_name.rfind(".")
new_dir_name = dir_name[:location] + "_backup" + dir_name[location:]
#打開原文件,因爲是二進制文件
#打開新文件,分別讀和寫
f_old = open(dir_name, "rb")
f_new = open(new_dir_name, "wb")
details = f_old.read(1024 * 1024)
f_new.write(details)
f_new.close()
f_old.close()