【问题标题】:How to subprocess this call in python: png2pos args > /dev/usb/lp0 [duplicate]如何在 python 中子处理这个调用:png2pos args > /dev/usb/lp0 [重复]
【发布时间】:2023-03-22 22:58:01
【问题描述】:

我目前有以下代码:

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

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

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

如果我忘记输入 > /dev/usb/lp0,这与我得到的错误相同,所以我相当肯定它与“>”字符有关。如何使用子进程将此输出重定向到 /dev/usb/lp0?

【问题讨论】:

    标签: python python-2.7 subprocess


    【解决方案1】:

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

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

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

    【讨论】:

    • 这里不需要使用shell=True。查看链接副本中的答案。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      相关资源
      最近更新 更多