檔案是作業系統提供給使用者操作複雜硬體的載體。開發者/管理員,應用程式需要永久儲存資料,就需要檔案這種載體。在python中操作檔案有兩種方式
方式一
f = open(r'檔案路徑') # 向作業系統傳送請求,讀取檔案
print(f) # f是檔案物件
print(f.read()) # 列印讀出的內容 window作業系統預設以gbk模式解碼資料
f.close() # 關閉檔案
檔案路徑有兩種,一種是絕對路徑,如:d:\pycharm\education\課程\python基礎\04,檔案操作\a.txt。這就是一種絕對路徑,告訴系統檔案在**。另一種便是相對路徑,如:a.txt。這是相對路徑。相對路徑有要求,必須在執行檔案操作程式同級資料夾下,下級檔案和上級資料夾下都無法讀取。此為,在檔案前加『r'告訴系統這是檔案路徑,其中\n,\都是檔案路徑格式,沒有其他任何意義。當然不閒麻煩還可以:d://pycharm/education/課程/python基礎\04,檔案操作\a.txt。還可以這種方式寫檔案路徑。
在這種模式下讀取完檔案後,一定要關閉一下讀取檔案操作。f.close(),如果我們不關閉檔案,那麼系統不會立即關閉讀取檔案的請求,這樣會占用系統的資源。
方式二上下文操作。
with open(r'檔案路徑『) as f:#或者
with open(r'
檔案路徑』)as f, open(r
'檔案路徑『)as f1:
同時開啟多個檔案
這種方式下開啟檔案,當我們回車寫指令對檔案操作。指令縮排,所有的程式指令就這這個檔案操作的子**塊。如果想要關閉。就和這with對齊,成為同級**,python程式就會關閉對這個檔案系統請求操作。
檔案操作"with open(r'檔案路徑', mode = 'rt', encoding = 'utf-8')「,其中」mode=' ' 」就是操作模式的選擇,encoding = '' 就是以什麼格式經行解碼。在mode 位置也可以不寫mode = '' ,直接寫』r',python預設是t文字檔案。
在'r'唯讀模式下,如果檔案不存在,系統會報錯。讀檔案,當檔案內容讀完後,在進行讀操作只能讀到空白。
#唯讀模式下的內建操作
f.readable() #
判讀是否可讀
f.read() #
讀取資訊
f.readline() #
對檔案單行資料讀取
f.readlines() #
讀取檔案所有行
在'w『只寫模式下,如果檔案不存在,那麼將會自動建立以該名命名的乙個檔案。寫檔案時,寫的資訊會覆蓋原來的資訊,是原來的資訊會丟失。
#唯讀模式的內建操作
f.writable() #
判讀是否可寫
f.write() #
寫資料到檔案
f.writelines() #
對檔案單行資料讀取
在'a『追加寫模式下,不會覆蓋原來的資料,在文字檔案資訊末尾出追加,進行寫操作。
在這三種模式下還有可讀可寫模式'r+t', 'w+t' 和 'a+t』模式。
在讀模式下,使用f.read(1),在內建函式read()內可以放置int型引數。這個參數列讀取位置的引數。在'rt『模式下,存入的方式是以'utf-8',我們可以讀取文字檔案的第1個漢字或字母。這就是實現對檔案的選擇性讀取了。
#a.txt檔案內容
商品 **
mac 8600iphone 8900聯想電腦 5200玩具 364
#檔案的第一字是商
#py檔案讀程式
with open(r'
a.txt
', '
rt', encoding='
utf-8
') as f:
rec = f.read(1) #
讀取第乙個字
(rec)
>>>商
#當read()引數改為2時
>>>商品
選擇型讀取還有以seek()的內建函式需要了解。寫f.seek(),我們使用ctrl鍵滑鼠放在seek上發現這裡需要放置兩個引數f.seek(offset, whence)。offset代表的是指標移動的位元組數,whence是代表參照什麼位置移動的。當whence = 0,表示在檔案開頭,並且在t和b模式下都可以使用。whence = 1,表示參照當前所在位置,必須在b模式下使用。whence = 2 ,表示參照末尾,也必須在b模式下使用。
#a.txt文件,在gbk模式下存入的
meking在學習還是在把妹
#py檔案
with open(r'
a.txt
', 'rb'
) as f:
f.seek(6, 1) #
在第六個btes開始,每個英文本母佔1btes,中文字元占用2btes
rec = f.read(2).decode('
gbk') #
讀取2btes,用gbk編碼解碼
(rec)
>>>在
whence=2時,的讀取位置將在末尾。利用此功能可以做一檔案檢測的功能
#py寫檔案
import
time
a = time.strftime('
%y-%m-%d %x')
(a)with open(r
'b.txt
', '
a', encoding='
utf-8
') as f:
f.write(
'%s meking在學習\n
'%a)
#檢測檔案是否寫入
with open(r'
b.txt
', 'rb'
) as f:
f.seek(0, 2) #
whence = 2模式。游標位置在b檔案末尾
while
true:
s = f.readline() #
讀取從之前末尾讀往後一行
if s: #
如果有寫入,便可以讀取內容
print(f.tell()) #
tell(),查游標位置
print("
新增的檔案內容:%s
" % s.decode('
utf-8
'))
檔案修改的兩種方式
'''方式一1,先把原檔案內容讀出
2 ,對檔案內容經行更改
3,把更改好的新內容寫入,覆蓋原檔案
'''with open(r
'a.txt
','r
',encoding='
utf-8
') as f:
a =f.read()
#print(a)
b = a.replace('
女朋友', '玩具'
)
#print(b)
with open(r'
a.txt
', '
w', encoding='
utf-8
') as f1:
f1.write(b)
print('
over
')
'''方式二1,同時操作兩個檔案
2,將原檔案的內容逐行讀出經行修改,寫入新檔案內
3,完成後,刪除原檔案,將新檔名改成原檔名
'''import
oswith open(r
'a.txt
', '
r', encoding='
utf-8
') as read_f,\
open(r
'a1.txt
', '
a', encoding='
utf-8
') as writre_f: #
原檔案讀,新檔案寫操作
a =read_f.read()
a = a.replace('
女朋友', '
玩具') #
修改檔案內容
for line in
a: new_line =line
writre_f.write(new_line)
#逐行寫入新檔案
os.remove(r'
a.txt
') #
刪除原檔案
os.replace('
a1.txt
', '
a.txt
') #
偷梁換柱,改成原檔案名字
Python基礎 檔案操作
使用 open 能夠開啟乙個檔案,open 的第乙個引數為檔名和路徑 my file.txt 第二個引數為將要以什麼方式開啟它,比如w為可寫方式.如果計算機沒有找到 my file.txt 這個檔案,w 方式能夠建立乙個新的檔案,並命名為 my file.txt 例項 text tthis is m...
python 基礎 檔案操作
開啟 在python,使用open函式,可以開啟乙個已經存在的檔案,或者建立乙個新檔案 open 檔名,訪問模式 示例如下 f open test.txt w 說明 訪問模式說明r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。...
python 基礎 檔案操作
開啟 在python,使用open函式,可以開啟乙個已經存在的檔案,或者建立乙個新檔案 open 檔名,訪問模式 示例如下 f open test.txt w 說明 訪問模式說明r 以唯讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。w開啟乙個檔案只用於寫入。如果該檔案已存在則將其覆蓋。...