python - 将数据传递给 subprocess.check_output

标签 python

我想调用一个脚本,将字符串的内容通过管道传输到它的标准输入并检索它的标准输出。

我不想接触真正的文件系统,所以我不能为它创建真正的临时文件。

使用 subprocess.check_output 我可以得到脚本写的任何东西;我怎样才能将输入字符串输入到它的标准输入中呢?

subprocess.check_output([script_name,"-"],stdin="this is some input")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/subprocess.py", line 537, in check_output
    process = Popen(stdout=PIPE, *popenargs, **kwargs)
  File "/usr/lib/python2.7/subprocess.py", line 672, in __init__
    errread, errwrite) = self._get_handles(stdin, stdout, stderr)
  File "/usr/lib/python2.7/subprocess.py", line 1043, in _get_handles
    p2cread = stdin.fileno()
AttributeError: 'str' object has no attribute 'fileno'

最佳答案

使用 Popen.communicate 而不是 subprocess.check_output

from subprocess import Popen, PIPE

p = Popen([script_name, "-"], stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate("this is some input")

关于python - 将数据传递给 subprocess.check_output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54533698/

相关文章:

python - 如何根据其他字段值的条件逻辑设置模型 bool 字段

python - 如何在Dlib中保存带有检测框的图像?

python - 生成多个进程来写入不同的文件 Python

python - 如何执行python脚本并将输出写入txt文件?

python - 创建 C :\Anaconda2 directory 的 Python(x,y) 安装出现问题

python - 用python读取json字符串的特定部分

python - 用字符串 %s 替换加入 python 中的字符串列表

python - 是什么让尝试: exit early?

python 基维 : unable to import main main

python - 返回数据帧行,其中列中的值不是日期类型