file文件
1.數(shù)據(jù)本地化和數(shù)據(jù)持久化
將數(shù)據(jù)以文件的形式存到計(jì)算機(jī)硬盤中(程序中保存的數(shù)據(jù)赋元,當(dāng)程序運(yùn)行結(jié)束后會(huì)自動(dòng)銷毀)
2.怎么做數(shù)據(jù)持久化(怎么將程序中的數(shù)據(jù)和本地文件中的數(shù)據(jù)關(guān)聯(lián))
文件讀寫操作 - 讀(獲取文件中的內(nèi)容)暴氏,寫(將數(shù)據(jù)添加到文件中)
a.文件操作的基本流程:打開文件 -> 文件操作(讀/寫) -> 關(guān)閉文件
3.打開文件
open(file,model='r',encoding=None) --> 以指定的模式打開指定的文件,并且返回被打開的文件對(duì)象
說明:
file - 字符串谣沸,需要打開的文件路徑。()
(了解)絕對(duì)路徑:文件在電腦上的全路徑
相對(duì)路徑:相對(duì)當(dāng)前代碼文件對(duì)應(yīng)的目錄來確定的路徑
'致橡樹.txt' ----當(dāng)前目錄下的致橡樹.txt
'./致橡樹.txt'----當(dāng)前目錄下的致橡樹.txt ./代表當(dāng)前目錄(可以省略)
../ ---代表當(dāng)前目錄的上層目錄
.../ ---代表當(dāng)前目錄的上層目錄的上層目錄
model - 字符串蛙埂,文件的打開方式
r -- 以只讀的形式打開图贸,文本 (默認(rèn)是r)
w -- 以寫的形式打開(覆蓋),文本
rb/br -- 以只讀的形式打開乾闰,二進(jìn)制
wb/bw -- 以寫的形式打開(覆蓋)落追,二進(jìn)制
a -- 以寫的形式打開(追加),文本
+ -- 以讀寫的方式打開
注意:當(dāng)以讀的方式打開一個(gè)不存在的文件涯肩,程序會(huì)報(bào)錯(cuò)轿钠。FileNotFindError
但是以寫的方式打一個(gè)不存在的文件,不會(huì)報(bào)錯(cuò)病苗,還會(huì)自動(dòng)創(chuàng)建一個(gè)新的文件谣膳。
encoding - 字符串,文字編碼方式铅乡。
utf-8:支持所有的語言.內(nèi)容多继谚。
gbk:只支持英文。內(nèi)容少
注意:
a. 讀和寫對(duì)應(yīng)的編碼要保持一致
b. 非文本文件阵幸,不能設(shè)置編碼方式 .例如圖片花履,視頻,可執(zhí)行文件等……
c. 給他傳值的時(shí)候要使用關(guān)鍵字參數(shù)
d. 以二進(jìn)制的形式打開文件挚赊,不能設(shè)置encoding
4.操作文件
a.讀操作
文件對(duì)象.read() - 獲取指定文件中的內(nèi)容
5.關(guān)閉文件
文件對(duì)象.close()
6.文件操作的簡(jiǎn)寫 - 打開文件操作完成后會(huì)自動(dòng)關(guān)閉文件 (文件對(duì)象就是f)
with open(file,model='r',encoding=None)) as 文件對(duì)象:
文件操作代碼
1.打開當(dāng)前目錄下的文件:文件名 或者 ./文件名
open('致橡樹.txt')
open('./致橡樹.txt')
2.打開當(dāng)前目錄下的子目錄里面的文件名:子目錄/文件名 或者 ./子目錄/文件名
open('./files2/asd.txt')
.打開方式
f = open('./files2/asd.txt','r',encoding='utf-8')
3.讀操作 ..以’r‘方式打開文件诡壁,獲取文件對(duì)象
f1 = open('致橡樹.txt',encoding='utf-8')
print(f1.read())
a.讀整個(gè)文件的內(nèi)容
f3 = open('致橡樹.txt','rb') #bytes--python二進(jìn)制對(duì)應(yīng)的數(shù)據(jù)類型
print(f3.read())
b.讀一行內(nèi)容
f2 = open('致橡樹.txt','r',encoding='utf-8')
print(f2)
line1 = f2.readline()
print(line1)
練習(xí):讀文件中的內(nèi)容,一行一行的讀荠割,讀完為止妹卿。
f4 = open('致橡樹.txt',encoding='utf-8')
while True:
line = f4.readline()
if not line:
break
print(line)
4.寫操作
如果需要對(duì)文件進(jìn)行寫操作,那么文件必須以寫的方式打開
w --用新的內(nèi)容覆蓋原內(nèi)容
a --在原文件末尾添加新的內(nèi)容
f = open('致橡樹.txt','w',encoding='utf-8')
f.write('人生若只如初見蔑鹦,何事秋風(fēng)悲畫扇夺克。') #覆蓋,原文字沒有了
f = open('asd.txt','a',encoding='utf-8')
f.write('人生若只如初見嚎朽,何事秋風(fēng)悲畫扇铺纽。') #寫到最后面
#關(guān)閉文件
f.close()
程序需要這個(gè)數(shù)據(jù)的時(shí)候,就從文件中將這個(gè)數(shù)據(jù)讀出來
對(duì)數(shù)據(jù)進(jìn)行修改后再將最新的數(shù)據(jù)保存到文件中哟忍。
用一個(gè)變量來保存當(dāng)前文件執(zhí)行的次數(shù)狡门,第一次執(zhí)行py文件的時(shí)候打印1
#將數(shù)據(jù)從文件中讀出來
with open('files2/asd.txt',encoding='utf-8') as f:
num = int(f.read())
# 修改數(shù)據(jù)
num += 1
#將新的數(shù)據(jù)再寫入文件中
with open('files2/asd.txt','w',encoding='utf-8') as f:
f.write(str(num))
#顯示數(shù)據(jù)
print(num)