python 檔案操作

2022-07-25 03:15:08 字數 4489 閱讀 9222

什麼是檔案?

檔案是作業系統提供給應用程式操作硬碟的的乙個虛擬單位,用於應用程式將資料永久儲存

開啟檔案:

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

f=open('a.txt',mode='r',encoding='utf-8')

print(f.read())

f.close()

檔案的開啟模式:t:text文字模式,讀寫檔案是以字串為單位,需要指定字元編碼,t模式的侷限性是只能讀寫文字檔案b:bytes位元組模式,讀寫檔案都是以bytes為單位,不需要指定字元編碼b模式的好處的是可以讀寫任意型別的檔案

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')  ##讀出檔案所有的行存到列表中

print(f.readlines())#['aaaaaaaaaaaaaaa eeeeeeeee\n', 'bbbbbbbbbbbbbb\n']

for line in f.readlines():       #迴圈檔案不要使用該方式,因為在檔案過大的情況下有可能會撐爆記憶體

print(line,end='')

1.22w 只寫

寫入前清空檔案內容(常用),沒有檔案則新建, 檔案存在,游標停在檔案開頭

f=open(r'a1.txt',mode='w',encoding='utf-8') #預設是wt

f.write('第一行\n')

f.write('第二行\n')

​f.writelines(['111111\n','222222\n','333333\n'])

f.write('aaaaaaaaaaaaaaaaaaaa\nbbbbbbbbbbbbbbb\nccccccccccccccc\n')

​f.close()

1.23 a 追加

追加內容到檔案末尾(常用),沒有檔案則新建,檔案存在,游標停在檔案末尾

f = open('a.txt', mode='a', encoding='utf-8')

print(f.writable())     #true

f.readlines() #報錯

​f.write('5555555555555\n')

f.writelines(['111111\n','222222\n','333333\n'])

f.close()

強調:寫檔案換行符用\n讀檔案換行符也是\n

檔案的開啟模式b模式強調:1、與t模式類似不能單獨使用,必須是rb,wb,ab2、b模式下讀寫都是以bytes單位的3、b模式下一定不能指定encoding引數

1.31 r 唯讀

只能讀取(常用),檔案不存在時報錯

rb模式

1.32 w 只寫

寫入前清空檔案內容(常用),沒有檔案則新建

wb模式

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'))

1.33 a 追加

追加內容到檔案末尾(常用),沒有檔案則新建

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 os

​with 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後面加上...