即時通訊網(wǎng)站開發(fā)源碼手機(jī)百度瀏覽器
1.文件的基本操作
- open()打開函數(shù)
語法 : open(name,mode)
name:是要打開的目標(biāo)文件名的字符串(可以包含文件所在的具體路徑)。
mode:設(shè)置打開文件的模式(訪問模式):只讀、寫入、追加等。
# 打開文件
'''
open(): 如果報(bào)FileNotFoundError,文件路徑錯誤或者文件不存在
參數(shù)1 ->路徑: 相對路徑:不以盤符開始的路徑 絕對路徑:以盤符開始的路勁的路徑
參數(shù)2 ->模式: 默認(rèn)r模式:如果文件不存在就會報(bào)錯 w和a模式:如果文件不存在,會自動創(chuàng)建
參數(shù)3 編碼: 默認(rèn)cp936,本質(zhì)是gbk,一般編碼會使用utf8'''f = open('w1.txt', mode='a')
print(f)
# 關(guān)閉文件
f.close()
- close()關(guān)閉函數(shù)
語法:文件對象.close() - read()
語法:文件對象.read(num)
num表示要從文件中讀取的數(shù)據(jù)的長度(單位是字符),如果沒有傳入num,那么就表示讀取文件中所有的數(shù)據(jù)
# 打開文件
f = open('w1.txt',mode='r',encoding='utf8')
# 讀取文件
# 一個個讀取,指定字符
data = f.read(7)
print(data)
# 讀取剩余的字符 .read類似指針,只會繼續(xù)往下讀取
data = f.read()
print(data)
# 關(guān)閉文件
f.close()
- readline() 一次讀取一行
- readlines() 一次讀取一行
# 打開文件
f = open('w1.txt', mode='r', encoding='utf8')
# 讀取文件
# 一次讀取一行
data = f.readline()
print(data)
# 一行行讀取剩余的字符 讀取的內(nèi)容默認(rèn)放在列表中
datas = f.readlines()
print(datas)
for line in datas:print(line, end='')
# 關(guān)閉文件
f.close()
- write()
- writelines()
# 打開文件
f = open('w2.txt', mode='w', encoding='utf8')
# 讀取文件
# write 寫入
f.write('hello')
f.write('python')
# 結(jié)果: hellopython
f.write('hello\npython')
'''
結(jié)果:
hello
python
'''
f.writelines('hello')
f.writelines('python')
# 結(jié)果: hellopython
# 結(jié)論:writeline一行行寫入并不會換行,也是繼續(xù)寫入
f.close()
注意:
w模式和a模式:如果文件不存在則創(chuàng)建該文件;如果文件存在,w模式先清空再寫入,a模式直接末尾追加。
r模式:如果文件不存在則報(bào)錯。
2.文件操作綜合案例
(1)txt文本文件備份
# 需求 備份txt文檔
f1 = open('w1.txt', mode='r', encoding='utf8')
f2 = open('w1[備份].txt', mode='w', encoding='utf8')# 讀寫文件
data = f1.read()
f2.write(data)# 關(guān)閉文件
f2.close()
f1.close()
(2).mp4文件備份
# 需求
f1 = open('wdrq.mp4', mode='rb')
f2 = open('wdrq[備份].mp4', mode='wb')
# 視頻和圖片不需要像文本一樣添加編碼,不然會報(bào)錯
# ValueError: binary mode doesn't take an encoding argument # 先從f1中讀取對象數(shù)據(jù)
data = f1.read()
# 把讀取到的文件寫入到備份文件中
f2.write(data)# 關(guān)閉文件
f2.close()
f1.close()