修改的概念:對於硬碟上數據的修改, 根本沒有改的操作, 只有覆蓋操作 修改的流程:文件的修改都是數據載入到記憶體中, 在記憶體中修改完再覆蓋入硬碟 一.修改方式一 1.修改過程 先以 r 模式打開源文件,將源文件內容全部讀入記憶體 然後在記憶體中完成修改 再以 w 模式打開源文件,將修改後的內容覆蓋入源文件 ...
修改的概念:對於硬碟上數據的修改, 根本沒有改的操作, 只有覆蓋操作
修改的流程:文件的修改都是數據載入到記憶體中, 在記憶體中修改完再覆蓋入硬碟
一.修改方式一
1.修改過程
- 先以 r 模式打開源文件,將源文件內容全部讀入記憶體
- 然後在記憶體中完成修改
- 再以 w 模式打開源文件,將修改後的內容覆蓋入源文件
2.優缺點
- 優點 : 不須要硬碟預留足夠的空間
- 缺點 : 會在文件內容過大的情況下,占用過多的記憶體
3.使用場景
看情況而定, 一般用於文本編輯器, 讓用戶能看到全部的內容
with open('user.txt',mode='r',encoding='utf-8') as f:
data=f.read()
data=data.replace('python','人生苦短,我用python')
with open('user.txt',mode='w',encoding='utf-8') as f:
f.write(data)
二.修改方式二
1.修改過程
- 以 r 模式打開源文件,然後以 w 模式打開一個臨時文件
- 從源文件中讀一行到記憶體中,修改完畢後直接寫入臨時文件,迴圈往複,直到操作完畢所有行
- 刪除源文件,將臨時文件名改名為源文件名
2.使用到 OS 模塊
- import os : 導入模塊
- os.remove( ) : 刪除
- os.rename( ) : 改名
3.優缺點
- 優點 :沒有對記憶體造成過度的占用
- 缺點:需要硬碟預留出足夠的空間來存放臨時文件
4.適用場景
看具體而定, 一般用於程式員開髮式
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 'python' in line:
line=line.replace('python','人生苦短,我用python')
write_f.write(line)
#Python小白學習交流群:725638078
os.remove('user.txt') #刪除源文件
os.rename('user.txt.swap','user.txt') #把臨時文件名改成源文件名
三.文件拷貝示例
可以拷貝任意類型的文件
os.path.isfile()先判斷文件是否存在
import os
while 1:
user_file = input("請輸入文件路徑>>").strip()
if not os.path.isfile(user_file):
print("文件不存在,請重新輸入")
continue
else:
copy_path = input("請輸入目標路徑>>").strip()
with open(r"%s"%(user_file),"rb")as read_file,\
open(r"%s"%(copy_path),"ab")as w_f:
for line in read_file:
w_f.write(line)
if len(user_file) == len(copy_path):
print("copy成功")
break