在 python 3 中运行命令时忽略反斜杠
Backslash ignored while operating a command in python 3
我正尝试通过在 python 中设置命令来 运行 软件中的某些步骤,如下所示:
命令
cmd="ximage <<EOF\nread image.img\ndetect\snr=3"
os.system(cmd)
当我执行最后一个命令时,它忽略了反斜杠并给我以下错误:
[XIMAGE> read image.img
Image size = 1000 x 1000 pixels
[XIMAGE> detect\snr=3
invalid command name "detectsnr=3"
它在执行命令时忽略反斜杠,尽管它在命令行中显示反斜杠。有没有人见过这个问题?任何帮助将不胜感激。
我的建议:通过使用 subprocess
和输入重定向
消除中间人并使您的代码更具可移植性
此外,在这里,真正的问题是您必须使用 /
而不是 \
作为您的命令(参考:ximage manual)。
detect/snr_threshold=x
Change the signal to noise acceptance threshold from its default value of 2.
反斜杠只是从解析中删除,无论您要放多少反斜杠...
import subprocess
p = subprocess.Popen(["ximage"],stdin=subprocess.PIPE)
out,err = p.communicate(b"read image.img\ndetect/snr=3")
returncode = p.wait()
像这样你可以传递字符串而不冒被底层 shell 解释的风险(os.system
被弃用的原因之一)并且它是可移植的例如 Windows .
subprocess.communicate
将输入字符串作为参数(bytes
类型因此具有 b
前缀)
我正尝试通过在 python 中设置命令来 运行 软件中的某些步骤,如下所示:
命令
cmd="ximage <<EOF\nread image.img\ndetect\snr=3"
os.system(cmd)
当我执行最后一个命令时,它忽略了反斜杠并给我以下错误:
[XIMAGE> read image.img
Image size = 1000 x 1000 pixels
[XIMAGE> detect\snr=3
invalid command name "detectsnr=3"
它在执行命令时忽略反斜杠,尽管它在命令行中显示反斜杠。有没有人见过这个问题?任何帮助将不胜感激。
我的建议:通过使用 subprocess
和输入重定向
此外,在这里,真正的问题是您必须使用 /
而不是 \
作为您的命令(参考:ximage manual)。
detect/snr_threshold=x Change the signal to noise acceptance threshold from its default value of 2.
反斜杠只是从解析中删除,无论您要放多少反斜杠...
import subprocess
p = subprocess.Popen(["ximage"],stdin=subprocess.PIPE)
out,err = p.communicate(b"read image.img\ndetect/snr=3")
returncode = p.wait()
像这样你可以传递字符串而不冒被底层 shell 解释的风险(os.system
被弃用的原因之一)并且它是可移植的例如 Windows .
subprocess.communicate
将输入字符串作为参数(bytes
类型因此具有 b
前缀)