3 02 檔案處理

2022-09-08 10:33:13 字數 4415 閱讀 3451

給你乙個檔案 「****.txt」,如何檢視內容?

1.安裝文字編輯器軟體

2.利用文字編輯器軟體開啟

3.檢視 or 寫入

4.儲存,關閉

檔案操作分為讀、寫、修改、我們先從讀開始學習

f = open(file="

e:/魯佳/python/****.txt

",mode ='

r',encoding = '

gbk'

)data =f.read()

f.close

f = open(file="

e:/魯佳/python/****.txt

",mode ='rb'

)data =f.read()

f.close

print(data)

檔案處理——智慧型檢測編碼的工具

問:示例2和示例1的區別在哪?

答:在於示例2開啟檔案時並未指定encoding,這是為何?是因為直接以rb模式開啟了檔案,rb是指二進位制模式,資料讀到記憶體裡直接是bytes格式,如果想看內容,還需要手動decode,因此在檔案開啟階段,不需要制定編碼

問:假如你不知道你要處理的檔案是什麼編碼怎麼辦呢?

首先安裝第三方工具包 chardet

e:\魯佳\python>pip install chardet

import

chardet

f = open(file="

e:/魯佳/python/****.txt

",mode ='rb'

)data =f.read()

f.close

result =chardet.detect(data)

print(result)

迴圈檔案:

f = open('

****.txt

',mode = '

r', encoding = '

gbk'

)for line in

f:

print

(line)

f.close()

結果:(注意:結果之間有空行,print會自動加乙個空行)

張瑤 18456898767

王芳 13569876898

楊超 11345566778

檔案處理——寫模式操作檔案,w 不是修改是建立模式, 如果在已有檔案上用w,會清空原來的內容

f = open('

****.txt

',mode = '

w', encoding = '

gbk'

)f.write(

'星星\t18909890988')

f.close()

檔案處理——追加模式操作檔案(把內容追加到檔案尾部)

f = open('

****.txt

',mode = '

a', encoding = '

gbk'

)f.write(

'\n東來\t18789007657\n')

f.write(

'天天\t18982564562\n')

f.write(

'楊英\t13658479875\n')

f.close()

注意:檔案處理——混合操作檔案

讀寫混合模式

f = open('

****.txt

',mode = '

r+', encoding = '

gbk'

)data =f.read()

print

(data)

f.write(

'白雲\t18789007657\n')

f.write(

'李文\t18982564562\n')

f.write(

'楊輕\t13658479875\n')

f.close()

檔案處理——檔案操作其他功能

def fileno(self,*args,**kwargs):

#返回檔案控制代碼在核心中的索引值,以後做io多路復用時可以用到

def flush(self,*args,**kwargs):

#把檔案從記憶體buffer裡強制重新整理到硬碟

def readable(self,*args,**kwargs):

#判斷是否可讀

def readline(self,*args,**kwargs):

#唯讀一行,遇到\r or \n為止

def seek(self,*args,**kwargs):

#把操作檔案的游標移到指定位置

#注意seek的長度是按位元組算的,字元編碼存每個字元所佔的位元組長度不一樣

#如"路飛學成"用gbk存是2個位元組乙個字,用utf-8就是3個位元組

def seekable(self,*args,**kwargs):

#判斷檔案是否可進行seek操作

def tell(self,*args,**kwargs):

#返回當前檔案操作游標位置

def truncate(self,*args,**kwargs):

#按指定長度截斷檔案,指定長度的話,就從檔案開頭開始截斷指定長度,不指定長度的話,就從當前位置到檔案尾部的內容全部去掉

def writable(self,*args,**kwargs):

#判斷檔案是否可寫

檔案處理——檔案修改功能

1 def alter(file,old_str,new_str):

2 """

3 替換檔案中的字串

4 :param file:檔名

5 :param old_str:就字串

6 :param new_str:新字串

7 :return:

8 """

9 file_data = ""

10 with open(file, "r", encoding="utf-8") as f:

11 for line in f:

12 if old_str in line:

13 line = line.replace(old_str,new_str)

14 file_data += line

15 with open(file,"w",encoding="utf-8") as f:

16 f.write(file_data)

17 18 alter("file1", "09876", "python")

import os

def alter(file,old_str,new_str):

"""將替換的字串寫到乙個新的檔案中,然後將原檔案刪除,新檔案改為原來檔案的名字

:param file: 檔案路徑

:param old_str: 需要替換的字串

:param new_str: 替換的字串

:return: none

"""with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:

for line in f1:

if old_str in line:

line = line.replace(old_str, new_str)

f2.write(line)

os.remove(file)

os.rename("%s.bak" % file, file)

alter("file1", "python", "測試")

1 import re,os

2 def alter(file,old_str,new_str):

3 4 with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:

5 for line in f1:

6 f2.write(re.sub(old_str,new_str,line))

7 os.remove(file)

8 os.rename("%s.bak" % file, file)

9 alter("file1", "admin", "password")

190328檔案處理

開啟檔案,得到檔案控制代碼並賦值給乙個變數 通過檔案控制代碼對檔案進行操作 關閉檔案 漢皇重色思傾國,御宇多年求不得。楊家有女初長成,養在深閨人未識。天生麗質難自棄,一朝選在君王側。回眸一笑百媚生,六宮粉黛無顏色。春寒賜浴華清池,溫泉水滑洗凝脂。侍兒扶起嬌無力,始是新承恩澤時。f open 長恨歌 ...

七 檔案處理

檔案操作 io操作 檔案操作和遠端網路都可以統稱為 io操作。文字檔案和二進位制檔案 文字檔案儲存的是普通字元,python是預設unicode碼,可以用記事本開啟,二進位制檔案是位元組儲存,無法用記事本開啟,用其他軟體開啟。建立檔案物件open f open r d a.txt r 這裡要注意,在...

4 1 3檔案處理命令

4.1.3檔案處理命令 命令名稱 touch 命令所在路徑 bin touch 執行許可權 所有使用者 語法 touch 檔名 功能描述 建立空檔案 注意 特殊符號也可以用作檔名,但是不建議使用 命令名稱 cat 命令所在路徑 bin cat 執行許可權 所有使用者 語法 cat 檔名 n 顯示行號...