python檔案的讀寫很簡單,僅僅是乙個open函式。
開啟檔案方式有:
open(絕對路徑/'檔名』,讀寫模式,encoding='utf-8'),open這種方式開啟檔案,操作後,要關閉檔案;
with open('檔名『,讀寫模式,encoding='utf-8')as f.with這種方式開啟檔案,自動會關閉檔案。
檔案操作的三步驟:
1、開啟檔案獲取檔案控制代碼,控制代碼就理解是這個檔案;
2、通過檔案控制代碼操作檔案
3、關閉檔案
注意:理解控制代碼的概念
在stdio.h中宣告為了管理開啟的檔案,系統為所有檔案建立了乙個開啟檔案資訊的結構體陣列,檔案控制代碼就是每個檔案的唯一識別符號,是檔案在記憶體中的儲存位置。控制代碼顧名思義,開啟後要關閉才能再次開啟。所以更新檔案後,一定要先關閉檔案,再次讀取讀到更新後的檔案內容。typedef struct file;
檔案讀取模式:
fr=open('r:唯讀模式,開啟不存在的檔案時,報錯;讀完檔案後,檔案指標在末尾a.txt
','r')
(fr.read())
fr.write(
'qiuqiqu,123456qq')
(fr.read())
執行結果:
liuyihan,123456yh
traceback (most recent call last):
file
"e:/自動化測試/lyh_python/day4作業/file.py
", line 3, in
fr.write(
'qiuqiqu,123456qq')
io.unsupportedoperation:
not writable
w:唯讀模式,會清空原來的檔案內容;開啟不存在的檔案時,直接幫你新建乙個檔案;
a:追加寫模式,在原檔案內容末尾追加新內容;開啟不存在的檔案時,直接幫你新建乙個檔案。
r+:可讀,可寫,可追加模式,開啟不存在的檔案時,幫你新建乙個檔案。
a.txt檔案內容:、以上程式,你有看懂嗎?檔案寫時,檔案指標在首行,所以liuyihan,123456yh 被修改為niuhanyang,123456nn,這時檔案指標在第二行。讀取檔案時,read()將第二行和第二行以後的內容讀出來。所以顯示結果如上圖所示。liuyihan,123456nn
qiuuqiu,123456qq
nuanuan,123455nn
fr=open('
a.txt
','r+')
fr.write(
'niuhanyang,123456nn')
(fr.read())
執行結果:
qiuqiu,123456qq
nuanuan,123455nn
w+:寫讀模式,寫時會把原來檔案內容清空,可讀取已寫入的檔案內
a+:追加讀寫內容,不存在的檔案會自動建立,存在則只追加內容。
file.txt檔案內容:上面程式,若不加fr.seek(0),讀取結果為空,因為追加寫,檔案指標在末尾,讀取時讀不到東西,seek()方法就是把檔案指標指向那個位置。0代表首行。liuyihan,123456yh
qiuqiu,123456qq
fr=open('
a.txt
','a+')
fr.write(
'niuhanyang,123456nn\n')
fr.seek(0)
(fr.read())
執行結果:
liuyihan,123456yh
qiuqiu,123456qq
niuhanyang,123456nn
f = open('注意:用上方read()和readlines()方法操作檔案時,當檔案很大時,會將檔案所有內容讀到記憶體中,很容易引起記憶體撐爆。高效的操作就是,讀一行操作一行,然後讀過的內容從記憶體中釋放。如以下**:file.txt
','a+
',encoding='
utf-8')
f.read()
#讀取檔案所有內容,返回字串型別
f.readline()#
讀取檔案第一行內容,返回字串型別
f.readlines()#
一行一行讀,獲取檔案所有內容,返回乙個list,檔案的每行內容作為list的每個元素
f.write()#
將字串寫入檔案,只能是字串型別
f.writelines()#
將乙個序列字串列表寫入檔案,需要換行時自己手動新增\n
f.seek(0)#
檔案指標指向哪個位置
f.tell()#
獲取當前檔案的指標指向
f.flush()#
寫入資料後,立即把資料從記憶體寫到磁碟中
f.truncate()#
清空檔案內容
import os
os.remove('file.txt')#刪除檔案
os.rename('file.txt','new_file.txt')#檔案重新命名
修改檔案有兩種方式:
第一種:讀取檔案所有內容,將檔案內容修改後,清空檔案所有原內容,再將修改後的檔案內容重新寫入;
注意:指明檔案絕對路徑時,路徑中若含有\t、\n、\s等轉義字元,在路徑前加r,意思是檔案路徑中的\t、\n等不是轉義字元。
第二種:將修改後的內容寫入乙個新檔案。
json串(字串),轉成字典
print(res)#
列印出字典
stus=#
定義乙個字典
res2=json.dumps(stus,indent=8,ensure_ascii=false)#
將字典轉換成json字串,ensure_ascii=false是防止中文報錯
print(res2)#
列印出json字串
with open(
'stus.json
','w
',encoding='
utf-8
') as f:#
將字典轉換成json字串,然後再寫入檔案stus.json中
f.write(res2)
以上程式,最終建立了乙個stus.json檔案,裡面內容為json型別
第一種方式:用loads(),將檔案的所有內容讀出來(json字串型別),轉換成字典,再列印出字典,從而獲取到檔案內容
第二種方法:用load(),直接操作檔案,將json字串轉換成字典,再列印出字典,從而獲取檔案內容。
第一種方法:用dumps(),將字典轉換成json字串型別,再寫入檔案
第二種方法:用dump(),直接操作檔案,傳入字典和檔案,將字典直接轉換成json字串型別,寫入檔案。
、注意:從上述程式,不難發現,很好記憶,帶s的函式是處理json字串的,不帶s的可直接處理檔案。
Python之檔案操作
file open filename,mode mode預設為 r 例如file ope test.txt r 以讀的方式開啟檔案.檔案操作完畢記得關閉.file.close 其中,mode可以有以下選擇 檔案test.txt的內容為 11111111111 aaaaaaaaa 2222222222...
Python之檔案操作
使用open w 以寫入模式開啟,如果檔案存在將會刪除裡面的所有內容,然後開啟這個檔案進行寫入 a 以追加模式開啟,寫入到檔案中的任何資料將自動新增到末尾 fobj open home coder documents obama.txt 唯讀開啟 fobj fobj.close 關閉檔案 fobj ...
Python之檔案操作
建立目錄import os import errno defmkdir dir try os.makedirs dir except oserror as exc if exc.errno errno.eexist print the dir has been existed pass else r...