1.檔案讀寫
檔案讀寫步驟:
開啟檔案:
open(『檔名稱』,『開啟方式』)
檔案開啟方式:
小結:write — w w+ wb wb+ a ab#檔案的操作
#開啟檔案 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.檔案操作
(f.read())
#讀取所有的資料
(f.read(3)
)#定義讀幾個資料,如3個資料
(f.readline())
#讀一行資料
(f.readlines())
#readlines() 按行讀取,
# 一次性讀取所有內容,返回乙個列表,每一行內容作為乙個元素
#如果讀取了二進位制的資料,可以通過解碼的方式轉換為指定的格式
#print(f.decode('gbk'))
#3.將檔案物件關閉
f.close(
)#with上下文管理
#with語句,不管在處理檔案過程中是否發生異常,都能保證with語句執行完畢後已經關閉開啟的檔案控制代碼
#也就是自動加close()
with
open
('test.txt'
,'r'
)as f:
(f.read(
))
w wb+ w+ – 每次都會去建立檔案
(二進位制讀寫時,要注意編碼問題,預設情況下,寫入檔案的編碼時gbk)
a ab a+ – 在原有的檔案的基礎之後去檔案指標的末尾去追加
檔案操作–檔案備份例子:
2.檔案定位#檔案的備份
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:
(msg)
pass
#1.tell()--返回指標當前所在的位置
with
open
('test.txt'
,'r'
)as f:
(f.read(3)
(f.tell())
#6--每乙個漢字兩位元組,所以當前位置為6
(f.read(2)
(f.tell())
#每次讀取時,檔案指標隨著上次位置繼續走
#2.truncate -- 可以對原始檔進行擷取操作,擷取後原檔案內容也會相應發生變化
fobjb =
open
('test.txt'
,'r'
(fobjb.read())
#鍐欏靉淇℃伅
fobjb.close(
('擷取之後的資料。。。。'
)fobja =
open
('test.txt'
,'r+'
)fobja.truncate(4)
(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)#相當於返回了原點位置
(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 讀寫模式...