![](/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.