Python基礎之檔案操作

2021-09-07 06:33:42 字數 2239 閱讀 3788

python的檔案操作還是比較簡單的基本分為三步:開啟,讀寫,關閉

檔案開啟

f=open('

db','r'

) 開啟

f.read()  讀

f.close()  關閉

為了避免程式設計師忘記最後一步關閉,優雅的python使用了以下語句:

with open('

db','

r') as f,open('

db2','r'

) as f2:

opration...

當然要記得冒號和縮排啦。。

檔案操作

檔案操作分為5個基本模式:

#

f = open('db', 'r') # 唯讀

#f = open('db', 'w') # 只寫,先清空原檔案

#f = open('db', 'x') # 檔案存在,報錯;不存在,建立並只寫,用的不多

#f = open('db', 'a') # 追加

還有乙個+的模式,但要與基本模式組合使用

r+讀寫

w+寫讀,先清空,後寫入,再讀取

a+ 追加寫入,永遠是檔案末尾追加

還有乙個b,b是以二進位制開啟,但不能加encoding引數

#

f = open('db', 'rb') #以二進位制開啟,不能加encoding引數,

一般open()引數中,需要加(操作物件,操作模式,encoding編碼)

操作時需要注意一定,二進位制開啟不需要設定enconding,但write寫入中文時,需要先將中文反轉為二進位制:

f=open('

db','

ab') #

#二進位制開啟就不需要寫編碼了

f.write(bytes('

李傑',encoding='

utf-8

')) #

寫入時要反轉為二進位制

f.write() 對檔案進行寫入操作。

操作檔案

read()    無引數,全部讀取;有引數:b,按位元組讀取,無b按字元讀取

readlines() 將文字每一行讀取,並轉為列表

readline 讀每一行

f.tell()  顯示當前指標所在的位置

f.seek(10)  移動指標到目標位置,使用seek()移動指標後,寫入檔案都後直接覆蓋後面的內容,並非插入

f.fileno()  顯示檔案描述符

f.flush()  將緩衝區的檔案強制寫硬碟

f.readable()  判斷是否可讀

f.truncate()  擷取資料,使用seek()移動指標,清空指標後面的內容,只保留前面的內容

f.write()  寫資料,如果open中有b,按位元組,如果無b,按字元

f=open('

db','r+'

)#print(f.read())

print

(())

print

(f.tell())

f.seek(f.tell())

print

(f.tell())

f.write('成

')  #直接覆蓋

print(f.read())

栗子:

f = open("

db", 'ab'

)f.write(bytes("李傑

", encoding="

utf-8"))

f.close()

f = open("

db", '

r+', encoding="

utf-8")

#f.fileno()

#如果開啟模式無 b,則read,按照字元讀取

data = f.read(1)

#tell當前指標所在的位置(位元組)

print

(f.tell())

#調整當前指著你的位置(位元組)

f.seek(f.tell())

#當前指標位置開始向覆蓋

f.write("

888"

)f.close()

python基礎之檔案操作

開啟檔案並輸出檔案內容模板 f open flie mode r encoding utf 8 data f.read 返回整個檔案資料 data f.readlines 以列 式,返回整個檔案資料 print data f.close flie檔案路徑 相對路徑或者絕對路徑 mode檔案開啟模式 ...

Python基礎之檔案操作

1 開啟檔案的方法 第一種 開啟檔案執行完命令後,需要關閉檔案,否則會一直占用記憶體空間 f open data 1.txt r encoding utf 8 後面的r 表示開啟檔案的模式是讀寫,encoding 8 是指定編碼格式,因為用open 函式開啟,open 函式會去找系統的預設編碼,wi...

python基礎之檔案操作

轉義rb 讀位元組 爬蟲 讀取出來的全部是位元組碼 f open test.text rb encoding utf 8 print f.read 報錯!valueerror binary mode doesn t take an encoding argument 因為rb rb 操作時不支援指定...