修改檔案方式 檔案管理

2021-10-09 16:40:11 字數 4182 閱讀 6078

原理: 「修改檔案」是刪除原始檔的同時,把原始檔載入到記憶體,修改完再放回去,替代原檔案,所以並沒有「修改」這一說,而是重做了個新的檔案。
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 ...