什麼是檔案?
檔案是作業系統提供給應用程式操作硬碟的的乙個虛擬單位,用於應用程式將資料永久儲存
開啟檔案:f = open(r'檔案的路徑',mode='模式',encoding='編碼型別')
f = open(r'a.txt',mode='r',encoding='unf-8')
with open(r'a.txt',mode='r',encoding='unf-8') as f: #with,不需要使用.close()
print('===>')
print(f.read())
讀檔案:
data=f.read()#讀出檔案所有的內容
print(data)
關閉檔案:
f.close() #**作業系統的資源
f.write()#寫
f.read()#讀
f.flush()#重新整理
f.close()#關閉檔案
預設的開啟檔案的編碼是:當前作業系統預設的編碼,win:gbk,linux:utf-8檔案的開啟模式:t:text文字模式,讀寫檔案是以字串為單位,需要指定字元編碼,t模式的侷限性是只能讀寫文字檔案b:bytes位元組模式,讀寫檔案都是以bytes為單位,不需要指定字元編碼b模式的好處的是可以讀寫任意型別的檔案f=open('a.txt',mode='r',encoding='utf-8')
print(f.read())
f.close()
1.21 r 唯讀
只能讀取(常用),檔案不存在時報錯, 檔案存在,游標停在檔案開頭
f=open('a.txt',mode='r',encoding='utf-8') # mode='rt'f.write('哈哈啊哈哈啊啊 啊啊123213213123\n') # 丟擲異常,不能寫
print(f.readable())#true
f = open('a.txt', mode='r', encoding='utf-8')#列印一行print(f.readline(),end='')#f.readline(5),列印前五個字元,空:預設列印一行
f.close()##一次讀一行
f = open('a.txt', mode='r', encoding='utf-8') ##讀出檔案所有的行存到列表中1.22w 只寫print(f.readlines())#['aaaaaaaaaaaaaaa eeeeeeeee\n', 'bbbbbbbbbbbbbb\n']
for line in f.readlines(): #迴圈檔案不要使用該方式,因為在檔案過大的情況下有可能會撐爆記憶體
print(line,end='')
寫入前清空檔案內容(常用),沒有檔案則新建, 檔案存在,游標停在檔案開頭
f=open(r'a1.txt',mode='w',encoding='utf-8') #預設是wt1.23 a 追加f.write('第一行\n')
f.write('第二行\n')
f.writelines(['111111\n','222222\n','333333\n'])
f.write('aaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbb\nccccccccccccccc\n')
f.close()
追加內容到檔案末尾(常用),沒有檔案則新建,檔案存在,游標停在檔案末尾
f = open('a.txt', mode='a', encoding='utf-8')強調:寫檔案換行符用\n讀檔案換行符也是\nprint(f.writable()) #true
f.readlines() #報錯
f.write('5555555555555\n')
f.writelines(['111111\n','222222\n','333333\n'])
f.close()
檔案的開啟模式b模式強調:1、與t模式類似不能單獨使用,必須是rb,wb,ab2、b模式下讀寫都是以bytes單位的3、b模式下一定不能指定encoding引數
1.31 r 唯讀
只能讀取(常用),檔案不存在時報錯
rb模式1.32 w 只寫
寫入前清空檔案內容(常用),沒有檔案則新建
wb模式1.33 a 追加with open('b.txt',mode='wb') as f:
msg='你好啊,吳三炮'
f.write(msg.encode('gbk'))
with open('b.txt',mode='wb') as f:
msg='你好啊,吳三炮'
f.write(msg.encode('utf-8'))
追加內容到檔案末尾(常用),沒有檔案則新建
ab模式with open('b.txt',mode='ab') as f:
f.write('你好'.encode('utf-8'))
with open('b.txt',mode='r+t',encoding='utf-8') as f:print(f.readable())#true
print(f.writable())#true
print(f.readlines())
f.write('\n吳大炮你好\n')
for line in f.readlines():
print(line,end='')
r+b 讀寫二進位制 / w+b 寫讀二進位制 / a+b 追加讀寫二進位制
修改檔案方式一:1、先把檔案內容全部讀入記憶體2、然後在記憶體中完成修改3、再把修改後的結果覆蓋寫入原檔案缺點:會在檔案內容過大的情況下,占用過多的記憶體
with open('user.txt',mode='r',encoding='utf-8') as f:修改檔案方式二:data=f.read()
data=data.replace('吳佩其','吳佩其[老男孩第二帥的人]')
with open('user.txt',mode='w',encoding='utf-8') as f:
f.write(data)
1、以讀的方式開啟原檔案,以寫的方式開啟新檔案2、讀一行原文內容,寫入新檔案,如果該行內容是需要修改的內容,那麼修改完後再寫入新檔案3、刪掉原檔案,將新檔名重新命名為原檔名
import oswith open('user.txt',mode='rt',encoding='utf-8') as read_f,\
open('user.txt.swap',mode='wt',encoding='utf-8') as write_f:
for line in read_f:
if '吳佩其' in line:
line=line.replace('吳佩其','吳佩其[老男漢特別特別的老]')
write_f.write(line)
os.remove('user.txt')
os.rename('user.txt.swap','user.txt')
with open('user.txt','r+',encoding='utf-8') as f:f.seek(9) #偏移量的單位是位元組
print(f.tell())#獲取當前游標位置
print(f.read())
with open('user.txt','r+',encoding='utf-8') as f:
f.seek(9) #偏移量的單位是位元組
print(f.tell())
f.write('[老男孩第二帥的人]')
python 檔案操作
簡明 python 教程 中的例子,python 執行出錯,用open代替file 可以執行。poem programming is fun when the work is done if you wanna make your work also fun use python f open e ...
python檔案操作
1,將乙個路徑名分解為目錄名和檔名兩部分 a,b os.path.split c 123 456 test.txt print a print b 顯示 c 123 456 test.txt 2,分解檔名的副檔名 a,b os.path.splitext c 123 456 test.txt pri...
Python 檔案操作
1.開啟檔案 如下 f open d test.txt w 說明 第乙個引數是檔名稱,包括路徑 第二個引數是開啟的模式mode r 唯讀 預設。如果檔案不存在,則丟擲錯誤 w 只寫 如果檔案 不存在,則自動建立檔案 a 附加到檔案末尾 r 讀寫 如果需要以二進位制方式開啟檔案,需要在mode後面加上...