【发布时间】:2016-03-10 00:08:12
【问题描述】:
我正在尝试使用 python Popen 来实现使用命令行的效果。
echo "hello" | docker exec -i $3 sh -c 'cat >/text.txt'
目标是将“hello”文本通过管道传输到docker exec 命令中,并将其写入 docker 容器。
我已经尝试过了,但似乎无法正常工作。
import subprocess
from subprocess import Popen, PIPE, STDOUT
p = Popen(('docker', 'exec', '-i', 'nginx-ssl', 'sh', '-c', 'cat >/text.txt'), stdin=subprocess.PIPE)
p.stdin.write('Hello')
p.stdin.close()
【问题讨论】:
-
它是如何工作的?它会产生一个空文件吗?根本没有文件?错误信息?
-
根本没有文件。不过没有错误。
-
什么是“码头工人”?你有它的文档链接吗?
-
只是一个提示(因为我没有安装docker):1)使用
communicate('Hello')而不是stdin.write并且不要关闭标准输入。另外,请确认您对根目录有写权限,如果没有,请尝试将>/text.txt替换为>text.txt。
标签: python subprocess stdin popen