Мой совет: устраните посредника и сделайте ваш код более переносимым, используя 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()
Таким образом, вы можете передать строку, не рискуя интерпретировать ее базовой оболочкой (одна из причин, по которой os.system
не рекомендуется), и она переносима, например, в Windows.
subprocess.communicate
принимает входную строку в качестве аргумента (типа bytes
, следовательно, префикс b
)