PYTHON學習筆記(十) 檔案操作

2021-10-08 11:57:06 字數 4562 閱讀 5880

1.檔案讀寫

檔案讀寫步驟:

開啟檔案:

open(『檔名稱』,『開啟方式』)

檔案開啟方式:

#檔案的操作

#開啟檔案 open

#預設的編碼是gbk,也就是中文編碼

#也可以在開啟檔案時給它指定乙個編碼型別

#w模式會在檔案已存在的情況下,會將檔案原來的內容覆蓋

fobj =

open

('./test.txt'

,'w'

,encoding=

'utf-8'

)#讀/寫檔案

#寫檔案

fobj.write(

'寫入資訊'

)#close()相當於儲存加關閉,關閉之前會自動儲存

fobj.close(

)#以二進位制的形式去寫資料

#效果其實差不多,只不過是寫入模式的不同

fobj =

open

('test.txt_!'

,'wb'

)fobj.write(

'二進位制寫入資料'

.encode(

'utf-8'))

fobj.close(

)#a模式是追加資料,不會將原來檔案內容覆蓋,如果檔案不存在也會建立

#ab模式則是以二進位制形式來追加,原理和a模式一樣

fobj =

open

('test.txt_!'

,'a'

)fobj.write(

'追加的資料不會覆蓋\r\n'

)#如果轉成utf-8編碼的話會將字串變成位元組

#而a模式下只可以輸入字串,所以不可以轉碼

fobj.close(

)#讀檔案

#1.開啟檔案

#f = open('test.txt','r')#r--唯讀形式開啟

f =open

('test.txt'

,'rb'

)#rb--以二進位制的形式讀取資料

#2.檔案操作

print

(f.read())

#讀取所有的資料

print

(f.read(3)

)#定義讀幾個資料,如3個資料

print

(f.readline())

#讀一行資料

print

(f.readlines())

#readlines() 按行讀取,

# 一次性讀取所有內容,返回乙個列表,每一行內容作為乙個元素

#如果讀取了二進位制的資料,可以通過解碼的方式轉換為指定的格式

#print(f.decode('gbk'))

#3.將檔案物件關閉

f.close(

)#with上下文管理

#with語句,不管在處理檔案過程中是否發生異常,都能保證with語句執行完畢後已經關閉開啟的檔案控制代碼

#也就是自動加close()

with

open

('test.txt'

,'r'

)as f:

print

(f.read(

))

小結:write — w w+ wb wb+ a ab

w wb+ w+ – 每次都會去建立檔案

(二進位制讀寫時,要注意編碼問題,預設情況下,寫入檔案的編碼時gbk)

a ab a+ – 在原有的檔案的基礎之後去檔案指標的末尾去追加

檔案操作–檔案備份例子:

#檔案的備份

defcopyfile()

:#接受使用者輸入的檔名

old_file =

input

('請輸入要備份的檔名'

)#因為要獲取對應的檔名和檔案的格式,所以要用「.」分割資料,存入列表

file_list = old_file.split(

'.')

#構造新的檔名.加上備份的字尾

new_file = file_list[0]

+'_備份.'

+file_list[1]

#轉移資料

old_f =

open

(old_file,

'r')

#開啟需要備份的檔案

new_f =

open

(new_file,

'w')

#以寫模式去開啟新檔案,不存在則建立

content = old_f.read(

)#將檔案內容讀取出來

new_f.write(content)

#將讀取的內容寫入到備份檔案

old_f.close(

) new_f.close(

)pass

copyfile(

)#如果處理超大檔案,依次將全部內容讀取出來顯然是不合適的,因此要優化一下

defcopybigfile()

:#接受使用者輸入的檔名

old_file =

input

('請輸入要備份的檔名'

)#因為要獲取對應的檔名和檔案的格式,所以要用「.」分割資料,存入列表

file_list = old_file.split(

'.')

#構造新的檔名.加上備份的字尾

new_file = file_list[0]

+'_備份.'

+file_list[1]

#使用for迴圈,逐漸讀取檔案

# 使用try catch處理錯誤的邏輯

try:

with

open

(old_file,

'r')

as old_f,

open

(new_file,

'w')

as new_f:

while

true

: content = old_f.read(

1024

)#一次讀取1024個字元

new_f.write(content)

#迴圈出口

iflen

(content)

<

1024

:break

except exception as msg:

print

(msg)

pass

2.檔案定位

#1.tell()--返回指標當前所在的位置

with

open

('test.txt'

,'r'

)as f:

print

(f.read(3)

)print

(f.tell())

#6--每乙個漢字兩位元組,所以當前位置為6

print

(f.read(2)

)print

(f.tell())

#每次讀取時,檔案指標隨著上次位置繼續走

#2.truncate -- 可以對原始檔進行擷取操作,擷取後原檔案內容也會相應發生變化

fobjb =

open

('test.txt'

,'r'

)print

(fobjb.read())

#鍐欏靉淇℃伅

fobjb.close(

)print

('擷取之後的資料。。。。'

)fobja =

open

('test.txt'

,'r+'

)fobja.truncate(4)

print

(fobja.read())

fobja.close(

)#鍐欏

#3.seek() -- 可以將檔案指標定位在其他位置在進行相應操作

#seek(offset,from)有兩個引數,offset,偏移量單位位元組,負數為往回偏移,正數是向前便宜

#from位置:0表示檔案開頭,1表示當前位置,2表示檔案末尾

#如 f.seek(-2,1)#相當於游標從當前位置往回走兩個位置

with

open

('test.txt'

,'rb'

)as f:

data = f.read(2)

#鍐print

(data.decode(

'gbk'))

#二進位制讀取後要解碼為中字

f.seek(-2

,1)#相當於返回了原點位置

print

(f.read(2)

.decode(

'gbk'))

#鍐#注:如果只用'r'的方式讀取檔案,沒有使用二進位制的選項開啟,只能從檔案的頭部開始讀取

Shell指令碼學習筆記 十 檔案操作

檔案操作 取得目錄內容 lsgetconf arg max 判斷檔案是否存在 建立檔案 建立一般檔案 建立檔案 1 使用轉向輸出 text.txt 2 配合空命令 test.xtx 可以增加script移植性,有時候使用 檔案 會造成語法錯誤 3 建立隱藏檔案 test.txt 4 使用touch命...

Python學習筆記 四 檔案操作

讀取鍵盤輸入 buf raw input please input your name buf raw input 開啟檔案 如果hello.txt不存在 fp open hello.txt w w是說建立這個檔案,以寫的方式開啟 fp.write text fp.close 如果hello.txt...

python學習筆記2 檔案操作

一 檔案操作 檔案操作一定要注意檔案指標 f open a encoding utf 8 f.seek 0 檔案指標移到行首 f.tell 檢視檔案指標的位置 f.read 返回字串 f.close f.truncate 清空 檔案開啟三種方式 讀 r 沒指定模式,就是讀 寫 w 追加 a 讀寫模式...