python基礎(五) 檔案操作

2021-08-20 14:44:51 字數 1938 閱讀 9696

檔案處理

1.在python中

#1. 開啟檔案,得到檔案控制代碼並賦值給乙個變數

f=open('a.txt','r',encoding='utf-8') #預設開啟模式就為r

#2. 通過控制代碼對檔案進行操作

data=f.read()

#3. 關閉檔案

f.close()

2. f = open('a.txt','r')過程分析

首先由應用程式向作業系統發起系統呼叫open(...),然後作業系統開啟該檔案,並返回乙個控制代碼給應用程式,最後應用程式將控制代碼賦值給變數f

f=open(...)是由作業系統開啟檔案,那如果我們沒有為open指定編碼,那麼開啟檔案的預設編碼很明顯是作業系統說了算了,作業系統會用自己的預設編碼去開啟檔案,在windows下是gbk,在linux下是utf-8。

設定編碼

f=open('

a.txt

','r

',encoding='

utf-8

')

3.  f.close()

開啟乙個檔案包含兩部分資源:作業系統級開啟的檔案+應用程式的變數。在操作完畢乙個檔案時,必須把與該檔案的這兩部分資源乙個不落地**,**方法為:

(1)f.close() #**作業系統級開啟的檔案

(2)del f #**應用程式級的變數

4. python3與python2 file、open

python3:檔案操作只有open

python2:檔案操作有file、open

兩者都能夠開啟檔案,對檔案進行操作,也具有相似的用法和引數,但是,這兩種檔案開啟方式有本質的區別:

file():為檔案類,用file()來開啟檔案,相當於這是在構造檔案類,

open():開啟檔案,是用python的內建函式來操作,我們一般使用open()開啟檔案進行操作,而用file當做乙個型別,比如type(f) is file

5. 開啟模式

xb  

注:以b方式開啟時,讀取到的內容是位元組型別,寫入時也需要提供位元組型別,不能指定編碼

#3. 『+』可表示:讀寫

"+" 表示可以同時讀寫某個檔案

r+, 讀寫【可讀,可寫】

w+,寫讀【可讀,可寫】

a+, 寫讀【可讀,可寫】

6. 檔案方法

#掌握f.read() #讀取所有內容,游標移動到檔案末尾

f.readline() #讀取一行內容,游標移動到第二行首部

f.readlines() #讀取每一行內容,存放於列表中

f.write('1111\n222\n') #針對文字模式的寫,需要自己寫換行符

f.write('1111\n222\n'.encode('utf-8')) #針對b模式的寫,需要自己寫換行符

f.writelines(['333\n','444\n']) #檔案模式

f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式

#了解f.readable() #檔案是否可讀

f.writable() #檔案是否可讀

f.closed #檔案是否關閉

f.encoding #如果檔案開啟模式為b,則沒有該屬性

f.flush() #立刻將檔案內容從記憶體刷到硬碟

7.智慧型檢測編碼工具

官方文件:

import chardet

result = chardet.detect(open('filename','rb').read())

print(result)

結果:

五 檔案操作

字元型的檔案會先編碼然後再儲存。所以讀取這些檔案的時候就需要解碼。檔案的開啟模式有唯讀 r 只寫 w 追加 a 以及二進位制模式和二進位制加下的唯讀 rb 只寫 wb 追加 ab 唯讀 預設模式,檔案必須存在,不存在則丟擲異常 只寫 不可讀 不存在則建立 存在則清空內容 追加 不可讀 不存在則建立 ...

python基礎知識 五 檔案操作

f open 1.txt r 開啟檔案,沒有不建立 f open 1.txt w 開啟檔案,沒有則建立 有會覆蓋 f open 1.txt a 開啟檔案,沒有建立,有會追加。f.write 寫檔案 f.read 讀檔案 f.close 關閉檔案 f.closed檢查檔案是否關閉,關閉了返回true,...

Python學習五 檔案

with open pi digits.txt as file object contents file object.read print contents 其中,pi digits.txt 為同目錄下的文字檔案。關鍵字with在不再需要訪問檔案後將其關閉。在這個程式中,注意到我們呼叫了open ...