給你乙個檔案 「****.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('結果:(注意:結果之間有空行,print會自動加乙個空行)****.txt
',mode = '
r', encoding = '
gbk'
)for line in
f:
(line)
f.close()
張瑤 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()
(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 osdef 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,os2 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 顯示行號...