【问题标题】:Piping Cygwin into a Python program将 Cygwin 导入 Python 程序
【发布时间】:2009-11-23 19:03:18
【问题描述】:

作为我对整个管道和 Python 的新手,我最近遇到了一个问题,试图使用 Python 的子进程模块将 Cygwin 的标准输入和标准输出通过管道传输到 Python 程序中。 比如我做了一个简单的程序:

cygwin = subprocess.Popen('PathToCygwin',shell=False,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
cygwin.stdin.write('ssh')

之后我收到此错误:

cygwin.stdin.write('ssh')
IOError: [Errno 22] Invalid argument

我做错了什么?

【问题讨论】:

    标签: python cygwin pipe subprocess


    【解决方案1】:

    好吧,您的文字代码将不起作用。您正在传递一个值为 'PathToCygwin' 的字符串,这不会做任何事情。我假设您传递的字符串比这更好,但您没有向我们展示什么。

    我认为您的 PathToCygwin 可能是问题所在。如果你没有找到正确的路径,它是行不通的。

    这是我的测试代码。我在 Cygwin 版本的 Python 下运行它,所以我使用了 Cygwin 样式的路径:而不是 r"C:\cygwin\bin\bash.exe" 我使用了 /cygdrive/c 路径:

    >>> cpath = "/cygdrive/c/cygwin/bin/bash.exe"
    >>> cygwin = subprocess.Popen(cpath,shell=False,stdin=subprocess.PIPE,stdout=su
    bprocess.PIPE)
    >>> cygwin.stdin.write("ssh")
    >>>
    

    再次,我在 Cygwin 编译的 Python 版本中运行它。如果您使用的是 Windows 原生版本的 Python,您可能需要使用 C: 路径。

    如果您仍然遇到问题,请告诉我们您使用的是哪个版本的 Python,并告诉我们您使用的实际路径代码吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-30
      • 2019-01-10
      • 1970-01-01
      • 2019-07-29
      相关资源
      最近更新 更多