使用python子进程运行包含os.ctermid()的另一个python脚本

时间:2017-01-28 21:51:44

标签: python subprocess

我编写了一个小的python脚本,它运行另一个python脚本并对其输出进行一些基本处理。然后它将此输出用作sublime-text插件的一部分。

它通过uisng subprocess.Popen

执行第二个python脚本(其源代码我无法控制)

除一个问题外,它有效。第二个python脚本有一个包含以下代码的函数

try:
  with open(os.ctermid(), "rb") as f:
    height, width = struct.unpack("hh", ioctl(f.fileno(), TIOCGWINSZ, "1234"))
  except (IOError, OSError, struct.error):
    # return default size if actual size can't be determined
    __warn_terminal_width_once()
    return __default_terminal_width
return width

此异常始终在命令open(os.ctermid(), "rb")上触发。 虽然我可以使用默认输出大小并过滤掉警告,但是能够以某种方式进行设置以便cterm()成功会更好。这可能吗?

编辑:如果我注释掉try块,则打印的异常是

  File "/usr/lib/python2.7/dist-packages/catkin_tools/common.py", line 445, in terminal_width_linux
    with open(os.ctermid(), "rb") as f:
IOError: [Errno 6] No such device or address: '/dev/tty'

此外,如果它帮助我的代码的完整源代码here,并且第61行发生了子进程调用

0 个答案:

没有答案