如何在python中对此调用进行子处理:png2pos args>的/ dev / USB / LP0

时间:2015-11-03 14:56:56

标签: python python-2.7 subprocess

我目前有以下代码:

subprocess.call(["png2pos", "-c", "example_2.png", ">", "/dev/usb/lp0"])

正在访问程序png2pos,因为它给我的消息是:

  

此实用程序生成二进制序列打印机命令。输出必须   被重定向

如果我忘记输入>这就是我得到的错误/ dev / usb / lp0,所以我很确定它与'>'有关。字符。如何使用子进程将此输出重定向到/ dev / usb / lp0?

2 个答案:

答案 0 :(得分:3)

要确保输出正确重定向,您需要将shell设置为True并传递一个字符串:

subprocess.call("png2pos -c example_2.png > /dev/usb/lp0", shell=True)

否则">"被视为程序参数。

答案 1 :(得分:2)

我没有安装你的工具,所以我不能在这里测试。但是之前使用python重定向控制台应用程序的输出存在问题。我不得不使用命令本身重定向它,而不是通过shell(正在尝试)

with open("/dev/usb/lp0", 'wb') as output_str:
    subprocess.Popen(["png2pos", "-c", "example_2.png"], stdout=output_str)