1. 程式人生 > >練習題1 —— 全域性替換程式

練習題1 —— 全域性替換程式

# 練習題1 —— 全域性替換程式:
# 寫一個指令碼,允許使用者按以下方式執行時,即可以對指定檔案內容進行全域性替換
# `python your_script.py old_str new_str filename`
# 替換完畢後列印替換了多少處內容

import sys
# print('引數個數:', len(sys.argv))
# print('他們是:', str(sys.argv))

par = sys.argv #從命令列 獲取 使用者輸入的引數的列表
path_list = sys.path #獲取路徑列表
# 使用佔 記憶體方式修改檔案
def replace_file(old_str,new_str,path_filename):
with open(path_filename,'r+',encoding='utf_8') as read_f:
info = ''
count = 0
for line in read_f:
# print(line,end='')
if old_str in line:
new_info = line.replace(old_str, new_str)
info += new_info
count += 1
else:
info += line
print('替換次數為%d' % count)
read_f.seek(0) #使游標移動到檔案開頭
read_f.write(info) #寫入內容
read_f.truncate(read_f.tell()) # 刪除掉游標當前位置 之後的內容! 防止解碼錯誤
old_str = par[1]
new_str = par[2]
filename = '%s\%s' % (path_list[0],par[3])
replace_file(old_str, new_str, filename)