1. 程式人生 > >20181202_檔案操作學習

20181202_檔案操作學習

file = open(file = '檔案位置',mode = '開啟模式', encoding = '編碼模式')

關於讀的

#以只讀方式開啟

mode= 引數 為 ‘r',encoding引數寫該檔案的編碼方式(如GKB)

#以只讀二進位制方式開啟

mode引數為‘rb',encoding不用寫

#以讀寫的方式開啟

mode = 'r+', encoding引數寫該檔案的編碼方式 (如GKB)

f = open('隨便寫寫.txt','r+',encoding='gbk')
data = f.read()
print(data)
f.write('\n一二三四,哈哈')

f.close()

這種是常用的方式,類似於追加,先讀後寫,之前的文字不會被刪掉。

 

關於寫的

#以只寫方式開啟

mode引數為’w',encoding為寫入文章要編碼的方式(如GKB)

f = open(
'隨便寫寫.txt','w',encoding = 'gbk'
)
f.write('哈哈哈哈哈哈')
f.close()

#以只寫入二進位制方式開啟

mode引數為‘wb’,encoding則不用寫,因為寫的直接就是二進位制嘛

#以寫讀的方式 

mode引數為‘w+',encoding為寫入文章要編碼的方式(如GKB),先寫再讀

但是需要注意,所有以寫開始的任務,都是直接清空原內容,再寫新內容,所以需要謹慎使用’寫‘方式,要確定要新健檔案才使用 w。

 

關於改的

#把內容加到檔案尾部

mode引數為’a',encoding為寫入文章要編碼的方式(如GKB)

f = open('隨便寫寫.txt','a',encoding='gbk')
f.write('\n又來一行,哈哈')
f.close()

#把內容加到檔案尾部以二進位制的方式 

mode引數為’ab',encoding則不用寫

 

迴圈檔案

#一句一句迴圈檔案

f = open('隨便寫寫.txt','r',encoding='gbk')
for line in f:
print(line)
f.close()

匯出結果:

除了文章內容本身的\n轉行符。print完一行會自帶轉行

 

修改檔案:

使用append方式,從檔案的最後寫入內容

將游標移到想改的地方,然後再寫入內容。但這種方式,會覆蓋後面的資料不推薦。

邊讀邊改的幾種方式:

1. 把檔案全部讀到記憶體中,在記憶體中一句句改,刪,最後再存。但這種方式,會 浪費資源,如word,vim。這樣會佔記憶體。

2. 把檔案一句句讀到讀到記憶體中,在記憶體改,刪,再一句句存到硬碟中,形成一個修改的新檔案,但是這樣會佔 硬碟。

 

 

其他重要語法:

#寫入

f.write("),僅在只寫,讀寫,寫讀的狀態下可以使用

#讀取到記憶體變數

f.read(),僅在只讀,讀寫,寫讀狀態下可以使用,引數可以是size,要讀取的字元數 。

#重新整理到硬碟,flush

f.flush()

#判斷是否可讀,readable

f.readable()

#只讀一行

f.readline()

#定位游標位置,seek

f.seek()

#返回游標座標,tell

f.tell()

#切字,truncate

f.truncate()   指定長度切,或者從某個位置開始切到尾巴

#檔名修改,os命令

os.rename(old_name,new_name),注意文件需要保持關閉的狀態