我正在撰寫一個 python 腳本來使用映射檔案(基于 json)通過 sed 替換 txt 檔案中的字串:
import json
import sys
import subprocess
file_to_edit = str(sys.argv[1])
a_dictionary = {"a.b.c.d": "e.f.g.h"}
for pair in a_dictionary.items():
orig = pair[0] //"a.b.c.d"
repl = pair[1] //"e.f.g.h"
現在我想執行以下shellcommand(在腳本中)
sed -i 's/orig/repl/g' filetoedit 。
或者我會手動輸入什么sed -i 's/a.b.c.d/e.f.g.h/g' datafile.txt
所以引號讓我很惱火,因為我找不到一種方法,因為我找不到如何將我的變數值插入到 shellcommand 的命令字串中,因為所需的格式被破壞了。另一個問題是,從我所見,它也取決于您如何執行 shellcommand,所以如果我希望我的腳本等到 sed 完成,我不知道哪個是正確的。
有誰知道我怎么能做到這一點?
謝謝
uj5u.com熱心網友回復:
如果您通過 shell 執行命令,則只需要引號。當您使用 時subprocess(),您可以通過將命令作為串列而不是字串傳遞來直接執行命令。
subprocess.run(["sed", "-i", f"s/{orig}/{repl}/g", file_to_edit]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/326724.html
