標籤:計數器 tab writable 其他 查看 截斷 高效 唯讀 trunc
一.檔案操作
對檔案的操作分三步:
1、開啟檔案擷取檔案的控制代碼,控制代碼就理解為這個檔案
2、通過檔案控制代碼操作檔案
3、關閉檔案。
1.檔案基本操作:
- f = open(‘file.txt‘,‘r‘) #以唯讀方式開啟一個檔案,擷取檔案控制代碼,如果是讀的話,r可以不寫,預設就是唯讀,
- 在python2中還有file方法可以開啟檔案,python3中file方法已經沒有了,只有open
- frist_line = f.readline()#擷取檔案的第一行內容,返回的是一個list
- print(frist_line)#列印第一行
- res = f.read()#擷取除了第一行剩下的所有檔案內容,檔案控制代碼發生了變化
- print(res)
- f.close()#關閉檔案
2.檔案開啟模式:
r:唯讀,不加模式預設為r w:唯寫,[不可讀,不存在則建立,存在則刪除內容] a:追加,[不可讀,不存在則建立,存在則只追加內容]"+" 表示可以同時讀寫某個檔案 r+ :讀寫--可讀、可寫、可追加,如果開啟的檔案不存在的話,會報錯 w+ :寫讀--先建立檔案,再寫(在原檔案上的修改都是覆蓋操作) a+ :追加讀--預設開啟控制代碼在末尾,讀取需先seek(0)指定位置,一寫控制代碼就到末尾了 #r和w,seek指定控制代碼可以覆蓋修改,a+指定控制代碼也是追加"U"表示在讀取時,可以將 \r \n \r\n自動轉換成 \n (與 r 或 r+ 模式同使用) rU r+U # windows上分行符號為 \r\n"b"表示處理二進位檔案 rb:二進位檔案讀 wb:二進位檔案寫 ab:追加二進位# 檔案存在硬碟上都是二進位,前邊說encoding=‘utf-8‘是指把二進位轉換成utf-8編碼開啟,# 而“b”是指,不用轉換編碼,我直接讀取二進位
3.檔案操作:
f = open("1.txt", ‘r‘, encoding="utf-8")# encoding="utf-8",utf-8編碼開啟檔案,windows下預設gbk開啟f.readline() # 讀一行,字串f.readable() # 判斷檔案是否可讀
f.writable() # 判斷檔案是否可寫
f.encoding() # 列印檔案的編碼
f.read() # 讀取檔案控制代碼到結束所有內容,大檔案時不要用,因為會把檔案內容都讀到記憶體中
f.readlines() # 讀取檔案所有內容,返回一個list,元素是每行的資料,大檔案時不要用f.write("天安門") # 寫入內容,r和w模式,為控制代碼處覆蓋寫入,a模式寫到最後
f.writelines([‘zhangsan‘],[‘李四‘]) #將一個列表寫入檔案中f.flush() # 強制重新整理(預設緩衝區滿了存入磁碟)f.close() # 檔案關閉f.closed() # 判斷檔案是否關閉f.read(5) # 讀取5個字元f.tell() # 查看檔案控制代碼位置。按照字元計數f.seek(0) # 移動檔案控制代碼到第0個字元位置f.encoding # 檔案編碼f.truncate() # 什麼不寫清空檔案f.truncate(10) # r模式截斷出前10個字元,其他模式還是清空
大檔案時,讀取檔案高效的操作方法:
用上面的read()和readlines()方法操作檔案的話,會先把檔案所有內容讀到記憶體中,這樣的話,記憶體資料一多,非常卡,高效的操作,就是讀一行操作一行,讀過的內容就從記憶體中釋放了
f = open(‘file.txt‘)
for line in f: # f 變成了迭代器
print(line) # 判斷行的話,需自己加個計數器
python基礎(三)檔案操作和集合