從其他檔案置換區塊內容

為什麼要學這個?

如果透過指令或程式來做會更有效率的話,當然要使用指令來做。這篇文章主要在講文字檔裡的字串處理。

如果有想透過程式來合併文字檔的內容,可以試看看文章裡附的小程式。


前置作業

程式碼下載:
https://github.com/max32002/MaxFontScripts/blob/master/update_block_from_file.py


使用方法

update_block_from_file.py --first FIRST --second SECOND --begin BEGIN --resume RESUME

參數說明:

  • –first 第一個檔案路徑,內容會被修改。
  • –second 第二個檔案路徑,內容會被複製。
  • –begin 第一個檔案跳脫不處理,第二個檔案開始複製的字串。
  • –resume 第二個檔案跳脫不處理,並且第一個檔案接續輸出的字串。

改良前的前身:
https://github.com/max32002/MaxFontScripts/blob/master/update_lang_props.py

前身的前世:
https://github.com/max32002/MaxFontScripts/blob/master/copy_kerning_props.py


使用範例2號

遇到的問題是,想要同步 github 的多個 project 裡的 README.md 檔案裡的「相關網址」的區塊。

使用步驟:

Step 1:先修改出一個標準版,要讓其他專案做「共用」,修改後放到一個指定路徑。例如:~/Documents/sh/fix_font_readme_urls/README.md

Step 2:使用 find . 指令,列出有 README.md 的專案,或使用 ls 手動整理目錄的清單。

Step 3:使用 Step 2 的 List ,產生一個 python 檔案。例如:batch_sync_git_readme.py,檔案下載:
https://github.com/max32002/MaxFontScripts/blob/master/batch_sync_git_readme.py

這個程式的主程式,是去使用上面寫的 python, 主程式如下:

begin_string = "## 相關網頁"
resume_string = "https://max-everyday.com/about/#donate"
cmd = "~/Documents/sh/update_block_from_file.py --first \"%sREADME.md\"" % (item.replace("\"","\\""))
cmd += " --second \"%s\"" % (reuse_file.replace("\"","\\""))
cmd += " --begin \"%s\"" % (begin_string.replace("\"","\\""))
cmd += " --resume \"%s\"" % (resume_string.replace("\"","\\""))
print(cmd)

Step 4:執行 batch_sync_git_readme.py > run.sh 取得批次置換的指令在 run.sh 裡。

Step 5:先手動執行 run.sh 裡的某一行,並檢查置換結果是否如預期。如果結果是對的,就執行 run.sh 讓其他的資料夾都置換成「共用區塊」後的版本。

Step 6:執行批次git add/commit/push 指令。例如:batch_git_push.py,檔案下載:
https://github.com/max32002/MaxFontScripts/blob/master/batch_git_push.py


使用範例3號

情境:

有多個目錄 ex: /convert/, /convert_b2/ , /convert_xd/ 每個目錄下都有 TtfConfig.py, 每個 python 的檔案,在某一行以下,希望與 /convert/ 目錄下的 TtfConfig.py 相同。

使用方法:

~/Documents/sh/update_block_from_file.py --first convert_xd/TtfConfig.py --second convert/TtfConfig.py --begin " STYLE_INDEX = 5"

範例說明:

在 ” STYLE_INDEX = 5″ 這行文字以下,都會使用 second 的,會修改掉 first 指定的檔案。


Code Review 影片

程式架構優化 – 從其他檔案置換區塊內容
https://youtu.be/q2b1MYMpvUI

Max優化程式的方法是減少程式碼中寫死的常數,提升程式的彈性來增加使程式更容易重覆利用。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *