在軟體開發或部署過程中,我們經常需要對多個 .ini
設定檔進行批次修改,例如將某個舊的參數名稱或路徑名稱,替換成新的命名。
這就像記事本的「全部取代」功能,但你不需要一個個打開檔案慢慢點——你可以用 Python 自動完成這些事!
本文將介紹一個 Python 函式:search_and_replace_in_ini
,它可以幫你:✅ 遞迴搜尋某個資料夾內所有 .ini
檔案
✅ 找出含有指定字串的檔案
✅ 將該字串替換為新字串
✅ 自動儲存修改結果
🧠 程式邏輯說明
這段程式的核心流程如下:
python
複製編輯def search_and_replace_in_ini(self, folder_path, old_name, new_name):
for root, _, files in os.walk(folder_path): # 遞迴掃描資料夾
for file in files:
if file.endswith('.ini'): # 只針對 .ini 檔案
if file in self.modify_ini_path_name: # 限定特定檔案名稱才修改
file_path = os.path.join(root, file) # 組成完整檔案路徑
with open(file_path, 'r', encoding='utf-8') as f:
lines = f.readlines() # 一行一行讀進來
modified = False
for i, line in enumerate(lines):
if old_name in line: # 找到要換的字串
lines[i] = line.replace(old_name, new_name) # 取代
modified = True
if modified: # 有修改才重新寫入
with open(file_path, 'w', encoding='utf-8') as f:
f.writelines(lines)
🧰 使用方式教學
✅ 1. 參數介紹
folder_path要搜尋的資料夾路徑(可遞迴)
old_name要被取代的舊字串
new_name要替換的新字串
self.modify_ini_path_name
限定要修改的 .ini 檔案清單(此屬性需先設定)
🛠️ 2. 初始化與使用範例
你可以這樣建一個簡單的類別來使用它:
import os
class IniEditor:
def __init__(self):
# 這裡你可以放要處理的特定 ini 檔名
self.modify_ini_path_name = ['config.ini', 'app.ini']
def search_and_replace_in_ini(self, folder_path, old_name, new_name):
for root, _, files in os.walk(folder_path):
for file in files:
if file.endswith('.ini'):
if file in self.modify_ini_path_name:
file_path = os.path.join(root, file)
with open(file_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
modified = False
for i, line in enumerate(lines):
if old_name in line:
lines[i] = line.replace(old_name, new_name)
modified = True
if modified:
with open(file_path, 'w', encoding='utf-8') as f:
f.writelines(lines)
# 範例執行
editor = IniEditor()
editor.search_and_replace_in_ini('./configs', 'OLD_NAME', 'NEW_NAME')
🧪 實用範例情境
- 🚀 部署環境轉換:將設定檔中的
localhost
改為192.168.1.100
- 🗂 批次更新版本:把
.dll=lib_v1.2
改成.dll=lib_v1.3
- 🔐 憑證路徑替換:換掉
.pem
或.crt
的相對路徑為正式環境路徑
🛡️ 注意事項
self.modify_ini_path_name
是一個用來白名單過濾的機制,只有列在裡面的檔案才會被修改- 建議在實際執行前先備份
.ini
檔,避免誤刪或錯改 - 如果你希望修改所有
.ini
,可以將判斷if file in self.modify_ini_path_name:
拿掉
🏁 結語
這段程式碼簡單又實用,特別適合有大量設定檔需要修改的場景。
如果你正在開發企業系統、維護大型專案,或只是單純不想手動一個一個開檔案改內容,這就是你的好幫手!
有興趣的話也可以進一步加上 GUI 或 log 記錄功能,打造一個完整的「設定檔編輯工具」。