檔案的使用

2022-08-16 08:24:12 字數 2815 閱讀 2609

python3讀取指定編碼的檔案

f=open("

test

")           #

windows作業系統的預設解碼是gbk,linux的作業系統的預設解碼方式utf8

f=open("

test

",encoding="

utf8

")    #

預設讀模式

f.truncate()      #

清空原檔案

f.flush() #

將記憶體的內容強制重新整理進檔案

python2中讀取gbk檔案

with open('

test.txt

', mode='rb'

) as f:

for row in

f:

print row.decode("

gbk")

buffering緩衝引數,僅允許在二進位制模式下,則0表示無緩衝,1表示行

緩衝,較大的數字指定緩衝區大小。

開啟檔案的模式有:

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

"b"表示以位元組的方式操作

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

print line,讀取檔案時,python2.7去掉換行

print(line,end=' ')讀取檔案時,python3.6去掉換行

--------------------讀操作

data=f.read(5)# python3讀指定個數的字元,python2讀取指定個數的位元組

data2=f.read(5) #從游標位置讀指定個數的字元,date讀取後游標已經移動到5個字元

data=f.readline() #讀取游標的那一行

data=f.readlines() #讀所有的行,結果是列表結果

呼叫read()會一次性讀取檔案的全部內容,如果檔案有10g,記憶體就爆了,所以,要保險起見,可以反覆呼叫read(size)方法,每次最多讀取size個位元組的內容。另外,呼叫readline()可以每次讀取一行內容,呼叫readlines()一次讀取所有內容並按行返回list。因此,要根據需要決定怎麼呼叫。

如果檔案很小,read()一次性讀取最方便;如果不能確定檔案大小,反覆呼叫read(size)比較保險;如果是配置檔案,呼叫readlines()最方便。

f = open('11.txt', 'r')

for line in

f.readlines():

print

(line.strip())

for line in f: # 推薦使用,優化記憶體,可迭代物件(字串,列表,字典,元組,檔案)

print

(line.strip())

with open('11.txt','r') 

as f:

for line in f:

print line

--------------------寫操作

f=open("test3",mode="w",encoding="utf8")

print(f.read()) #不可讀

f.write("yyyy\nworld2") 如果沒有檔案就建立乙個檔案,寫的內容進行覆蓋

f.write("world2")  #向檔案內寫內容

--------------------flush操作

f.write("hellp test5") #先放在快取,最後一起存入磁碟

f.flush() #將快取的內容立即存入磁碟

可讀可寫模式 r+ w+ a+

r+模式是追加寫

w+先覆蓋,再寫入以後才能讀出

f.seek(0) #將游標移動到最前面,seek按位元組走

f.seek(5) #將游標移到開始位置,不同於read()方法,它是按位元組移動的

print(f.tell())#顯示當前游標的位置 

f.seek(3,0) #將游標移到開始位置,不同於read()方法,它是按位元組移動的,0從頭開始      

f.seek(-3,2) #將游標移到開始位置,不同於read()方法,它是按位元組移動的,2從末尾開始         

f.seek(1,1)  #1從當前位置開始 

a+ 先總是在最後位置新增,不覆蓋

f.seek(0) #無論游標在任何位置,追加的內容都在最後位置新增

------------總結w:覆蓋寫 a:追加寫

r+:預設游標在開始位置, 寫的追加寫

w+:覆蓋寫,想讀取內容:seek調整

a+: 游標預設在檔案最後位置,不管游標位置,一定是追加寫;想讀取內容:seek調整

seek的應用,比如斷點續傳

-------- rb wb ab 二進位制操作

rb  或 r+b

wb 或 w+b

xb 或 w+b

ab 或 a+b

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

檔案的使用

檔案是乙個儲存在輔助儲存器上的資料序列,可以包含任何資料內容。概念上,檔案是資料的集合和抽象,類似的,函式是程式的集合和抽象,用檔案形式組織和表達資料更有效也更為靈活,一般由單一特定編碼的字元組成,如utf 8編碼,內容容易統一展示和閱讀。直接由位元0和位元1組成,沒有統一字元編碼,檔案內部資料的組...

使用Matlab批量的處理檔案(檔案的檔名類似)

matlab是處理資料的乙個強有力的工具。讀取大量的檔案,一次只處理乙個資料,是乙個浪費精力的工作,可以使用一種方法批量的處理檔名相似的檔案,將會節省大量的時間,去幹更多有意義的事情,要學會偷懶。clc clear close all fori 1 10 代表檔案的格式 filename strca...

標頭檔案的使用

標頭檔案的使用 把函式原型和常量定義放在乙個標頭檔案中是乙個很好的程式設計習慣。例子 假設需要管理4個連鎖的旅館。對於預定住宿時間超過一天的人來說,第1天的收費是第1天的95 而第3天的收費則是第2天的95 等待。編寫乙個程式,對於指定的旅館和住宿天數可以計算出收費總額。同時程式中要實現乙個選單,從...