原理: 「修改檔案」是刪除原始檔的同時,把原始檔載入到記憶體,修改完再放回去,替代原檔案,所以並沒有「修改」這一說,而是重做了個新的檔案。
1、先以r的方式開啟原始檔;然後將原始檔內容一次性全部讀入記憶體,在記憶體中修改完畢。
2、然後以w的方式開啟原始檔(原始檔內容立即被清空);
將記憶體中修改的結果寫回原始檔中
特點:對記憶體占用比較大,要求記憶體有充足的空間,對硬碟沒有特殊要求
# with open('a.txt', mode="r", encoding="utf-8") as f:
# data=f.read()
# res=data.replace("egon",'egon')##
# with open('a.txt', mode="w", encoding="utf-8") as f1:
# f1.write(res)
特點:要求硬碟有充足的空間,對記憶體沒有特殊要求
# import os
# with open('a.txt', mode="r", encoding='utf-8') as src_f,\
# open('.a.txt.swp',mode="w",encoding='utf-8') as dst_f:
# for line in src_f:
# res=line.replace("egon","egon")
# # print(res)
# dst_f.write(res)
# os.remove('a.txt')
# os.rename('.a.txt.swp', 'a.txt')
1、文字處理:
格式:
預設是t(txt文字)模式
r(讀),預設為rt;
w(寫),預設為wt;
b(二進位制),需要指定,如rb為讀取二進位制模式
f.read()和for的區別:當處理大檔案時,用for不會占用很多資源,一行一行的處理。
# with open('1.png',mode='rb') as f:
# data=f.read()
# print(data)
可以交給for處理
# for line in f:
# print(line)
3、複製檔案:複製檔案從某處到某處
# src_file_path=input("請輸入原始檔路徑》: ").strip() #.strip去除空格字元
# dst_file_path=input("請輸入目標檔案路徑》: ").strip() #.strip去除空格字元
# src_file_path=r"%s" %src_file_path # %s占用變數並替換,r取消轉義使用者輸入的特殊字元如\
# dst_file_path=r"%s" %dst_file_path # %s占用變數並替換,r取消轉義使用者輸入的特殊字元如\
# with open(src_file_path,mode='rb') as src_f,open(dst_file_path,mode='wb') as dst_f:
# data=src_f.read()
# dst_f.write(data) #一次寫入,占用記憶體空間
# for line in src_f:
# dst_f.write(line) #邊讀邊寫,省記憶體空間
複製:填寫絕對路徑(路徑全名)或當前路徑(寫個檔名即可),預設為當前路徑;
一次寫入,占用記憶體空間,
x=input('請輸入源原檔案路徑》:').strip()
y=input('請輸入目標檔案路徑》:').strip()
x=r'%s' %x
y=r'%s' %y
with open(x,mode='rb') as q,open(y,mode='wb') as f:
date=q.read()
f.write(date)
或
邊讀邊寫,省記憶體空間
x=input('請輸入源原檔案路徑》:').strip()
y=input('請輸入目標檔案路徑》:').strip()
4、規則介紹:
f=open(檔案的路徑,mode="開啟模式",encoding="字元編碼")
print(f)
f.read()
f.write()
f.close()
# 上下文管理
with open(檔案的路徑,mode="開啟模式",encoding="字元編碼") as f:
**1**2
**3
# with open('a.txt', mode="r", encoding="utf-8") as f:
# data=f.read()
# res=data.replace("egon",'egon')##
# with open('a.txt', mode="w", encoding="utf-8") as f1:
# f1.write(res)
三、文字編碼:字元編碼一般為utf-8(萬國字元表)
相互關係:
字元--------編碼---------數字
字元《------解碼---------數字
字元編碼表:字元與數字的對應關係:
ascii表:英文本元與數字的對應關係
用乙個bytes對應乙個英文本元
gbk表:英文本元與中文字元跟數字的對應關係
用2bytes對應乙個字元
shift-jis:英文本元與日文字元跟數字的對應關係
euc-kr:英文本元與韓文本元跟數字的對應關係
utf-8:"萬國字元與數字的對應關係"
1bytes===>1個英文本元
3bytes===>1個中文字元
# 編碼與解碼使用的格式要保持一致!
# with open('d.txt',mode='wt',encoding='utf-8') as f:
# f.write("哈哈哈哈")
# with open('d.txt', mode='rt', encoding='utf-8') as f:
# print(f.read())
linux文字檔案編碼
vim開啟檔案,輸入冒號底行插入**即可
常用編碼模式:utf-8 gbk big5 cp936
set fenc=編碼:更改要轉換的編碼
set fileencoding:檢視當前檔案編碼格式
set ff:檢視當前文字模式,一般為dos、linux
set ff=dos:設定為dos模式
set ff=unix:設定為unix模式
最末行模式輸入命令:edit ++enc=gb18030臨時編輯、檢視
git管理修改,撤銷修改,刪除檔案
如果我們對檔案做以下操作 你會發現第二次修改沒有被提交。原因 git管理的是修改,當你用git add命令後,在工作區的第一次修改被放入暫存區,準備提交,但是,在工作區的第二次修改並沒有放入暫存區,所以,git commit只負責把暫存區的修改提交了,也就是第一次的修改被提交了,第二次的修改不會被提...
檔案管理 外存分配方式
1 外存分配方法 目前,常用的外存分配方法有連續分配 鏈結分配和索引分配三種。通常,在乙個系統中,僅採用其中的一種方法來為檔案分配外存空間。檔案的物理結構直接與外存分配方式有關。在採用不同的分配方式時,將形成不同的檔案物理結構。例如,在採用連續分配方式時的檔案物理結構 是順序式的檔案結構,鏈結分配方...
檔案修改的兩種方式
whw.txt檔案中有一下內容 張三 13333333333 小李 15555555555 王二麻 12222222222 編寫程式實現檔案內容的修改 方法一 佔硬碟的修改方式 需要新建乙個檔案 import osf name whw.txt f new name s.new f name old ...