簡述 Python3 文件處理
阿新 • • 發佈:2017-10-30
常用 字符串 是否 光標移動 指定 哈哈 打開 方式 color
1、文件處理
找到文件 --> 打開文件 --> 操作:讀、寫 --> 保存 --> 關閉
1.1.1 寫文件
(只要牽扯到文件操作,都是字符串;寫文件的時候需要把寫的數字轉換成字符串;utf-8 只有在存儲時才用。)
1 f = open(‘歌詞‘, ‘w’ , endcoding = ‘utf-8‘) 2 # f:文件操作符、文件句柄、文件操作對象 3 # open 打開文件是依賴了操作系統提供的途徑 4 # 操作系統有自己的編碼,open在打開文件的時候默認使用操作系統的編碼 5# win : gbk mac/Linux : utf-8 6 7 # 習慣給文件操作對象命名為: f file f_obj f_handler fh 8 9 print(f.writable()) # 判斷文件是否可寫 10 print(f.readable()) # 判斷文件是否可讀 11 12 f.write(‘6785675‘) # 寫文件時,需要寫數字的話,則會把數字轉換成字符串 13 f.write(‘sadasdas‘) # 寫入字符串內容 14 f.write(‘\nasasad‘) #文件的換行 \n
15 f.write(‘哈哈‘) # 註意編碼的統一性 utf-8 Unicode gbk 16 17 f.close() # 結尾要加上close語句
註:
open() 打開文件是依賴了操作系統提供的途徑;
操作系統有自己的編碼,open在打開文件的時候默認使用操作系統的編碼(win gbk mac/linux utf-8)
註:
‘\’ 轉義符號 前面加 r‘str’ 或者 \\ 可以取消轉義
1.1.2 找到文件詳解(find files):
文件與python的執行文件在同一路徑下的話,直接使用文件名就可以打開文件; 文件與python的執行文件不在同一路徑下的話,用絕對路徑找到文件; 文件的路徑需要用取消轉譯的方式來表示:1)\\ 2)r‘路徑‘ 如果以寫文件的方式打開一個文件,那麽不存在的文件會被創建,存在的文件之前內容會被清空
1.1.3 打開文件(open files):
打開方式: 文件句柄 = open(‘文件路徑‘, ‘模式‘)
模式可以是一下方式以及他們之間的組合:
#1. 打開文件的模式有(默認為文本模式): r ,只讀模式【默認模式,文件必須存在,不存在則拋出異常】 w,只寫模式【不可讀;不存在則創建;存在則清空內容】 a, 之追加寫模式【不可讀;不存在則創建;存在則只追加內容】 #2. 對於非文本文件,我們只能使用b模式,"b"表示以字節的方式操作(而所有文件也都是以字節的形式存儲的,
使用這種模式無需考慮文本文件的字符編碼、圖片文件的jgp格式、視頻文件的avi格式) rb wb ab 註:以b方式打開時,讀取到的內容是字節類型,寫入時也需要提供字節類型,不能指定編碼
補充:
# b : 適用於圖片、音樂、視頻等任何文件 # 傳輸: 上傳、下載 # a :追寫內容(w的話會重新寫入內容,如果之前裏面有內容,會把前面的內容清空重新寫入) # a+:追加可讀 # r+: 可讀可寫: 1)先讀後寫:寫是追寫 2)先寫後讀:從頭開始寫 #w+ : 可寫可讀 :一上來文件就清空了 盡管可讀 :1)但是讀取出來的內容是你這次打開文件新寫入的 2)光標在最後,需要主動移動光標才可以讀
f = open(‘歌詞‘, ‘w+‘, encoding=‘utf-8‘) f.write(‘abc\n‘) f.write(‘哈哈哈‘) f.seek(0) print(f.read()) f.close() # python (原生不支持直接修改)裏沒有直接修改文件的功能
總結:
# 一般情況下:文件操作要麽讀,要麽寫,很少會讀寫、寫讀同時用 # 常用的: r、w、a # rb, wb, ab 不需要指定編碼了
實例:
# 只顯示文件中有內容的行 # 已有shoplist文件,且文件內容中有有空行,要求只顯示文件中有內容的行 f = open(‘shoplist‘, encoding=‘utf-8‘) goods_list = [] for line in f: if line.strip(): print(line.strip()) f.close()
1.1.4 關閉文件詳解(close files):
操作系統級別的關閉文件資源:f.close() # 必須寫 del f 主動釋放一個python程序內存的變量 # 可寫可不寫
1.2 讀文件:
打開文件 --> 讀取文件
1.2.1 讀取文件
1)讀取文件的第一種方式: read()的方法,用read方法會一次性的讀出文件中的所有內容 2)讀取文件的第二種方式: read(n),指定讀取n個單位 3)讀取文件的第三種方式: readline(),按照行讀取,每次執行就會往下讀一行 4)讀取文件的第四種方式: readlines(),返回一個列表,將文件中的每一行作為列表中的每一項返回一個列表 5)讀取文件的第五種方式:
最常用的讀取方法 for i in f: print(l.strip())
2.文件內光標移動:
1)seek:移動光標到第幾個字節的位置(一般作用:移動到最開始和最末尾)
seek(o) :移動到最開始
seek(0,2) :移動到最末尾
f.seek(3) # 光標移動到三個字節的地方 content = f.read(2) # 讀取兩個字符
2)tell : 告訴你光標在第幾個字節
3)truncate:截斷文件,所以文件的打開方式必須可寫,但是不能用w或w+等方式打開,因為那樣直接清空文件了,所以truncate要在r+或a或a+等模式下測試效果(保留n個字節)
簡述 Python3 文件處理