Python 文件的操作

一、文件權限

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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章