![](/img/trans.png)
[英]How to fix "Syntax Error, Invalid Syntax" (No context or reason why) Elif Function Python
[英]How to fix "awk: Syntax error Context is: >>> ' -'' <<<" error in python subprocess?
嘗試使用 subprocess.Popen 處理 p4 文件,然后通過 subprocess.Popen 再次將該輸出傳遞給 awk。 輸入格式為://xxx/xx/xx/xx/xx/xx.xx#99 - edit change xxxxxxx (text+k)
在這里用“x”替換了原始名稱,因為它都是專有信息。 想根據“-”(空格連字符)拆分並獲取帶有修訂號的文件名。
awk_cmd = ["awk","-F\' -\'","\'{print $1}\'"]
awk_cmd_output = subprocess.Popen(awk_cmd, stdout=subprocess.PIPE, stdin = p4_files_output.stdout)
看到這個錯誤來自 awk: awk: Syntax error Context is:
'-''<<<
當我在 cmd awk -F' -' '{print $1}' 中運行它時,它工作正常。 似乎 awk 最后得到了一個額外的單引號。 理想情況下,它應該是“-”而不是“-”。
堅持awk
& subprocess 解決方案,只需使用雙引號並刪除單引號,這僅對 shell 有用,但在使用subprocess
時按字面傳遞給進程,這會使命令失敗:
awk_cmd = ["awk","-F -","{print $1}"]
讓subprocess
添加正確的引用。 它不會根據空格拆分參數。
但最好的方法是刪除awk
,並使用str.split
,例如:
output = []
for line in p4_files_output.stdout:
output.append(line.decode().split(" -")[0])
output_text = "\n".join(output)
或使用理解的單行:
output_text = "\n".join([line.decode().split(" -")[0] line in p4_files_output.stdout])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.