2
我相信肯定有更聰明的方法來實現這一點。我需要改變我的JavaScript之前使用Closure縮小它的應用程序ID。如何在Python中使用sed?
我想出了一個「快速」解決方案,就是使用良好的舊sed。雖然這在命令行上工作,但在python文件中運行時會失敗。它不會因錯誤而失敗。 outfile文件是源的精確副本。就好像它沒有找到文本。
choice = raw_input("Type 1 (Staging) or 2 (Production)?")
if choice == '1':
cmd = r"sed 's%var appid = '1234';%var appid = '5678';%' {0}f11.js > {0}f11_final.js".format(PATH)
os.system(cmd)
任何想法我失蹤了?由於
UPDATE:
我只是改變從這個來源:
var appid = '1';
這樣:
var appid = 1;
就跑這個成功:
cmd = "sed -i 's%var appid = 1;%var appid = 2;%' {0}f11.js".format(PATH)
它與轉義單引號有關。任何想法我可以做什麼?我試過\'
但它失敗了。
解決方案:
我結束了在蟒蛇做的建議。如果你以前沒有做過,那很不容易。所以我分享我的代碼:
with open("{0}f11.js".format(PATH), "r") as sources:
lines = sources.readlines()
with open("{0}f11-final.js".format(PATH), "w") as sources:
for line in lines:
sources.write(re.sub("var appid = '1';", "var appid = '2';", line))
正則表達式中的'''不應該被轉義? – Bakuriu
你確定嗎?這適用於我 - os.system(r「echo'var appid = 1234;'| sed's%var appid ='1234';%var appid ='5678';%'」) – user1827356
它拋出'sh:1 :Syntax error:Unterminated quoted string' if if it escape it like like:'cmd = r「sed's%var appid = \'1234';%var appid ='5678';%'...' – Houman