【发布时间】:2016-05-15 16:42:24
【问题描述】:
代码如下(在 python 2.7 提示符下)
import subprocess as sp
a = sp.Popen(['bash', '-c', 'ssh [REDACTED] cat text.txt'],
stdout=sp.PIPE, stderr=sp.PIPE)
print(a.communicate()[0])
我希望这个程序打印整个“text.txt”文件,但是它缺少最后几行。
文件 text.txt 位于远程服务器中,我认为这是它的要点。如果我检索文件然后在本地执行 subprocess.Popen,它会按预期工作。
为什么会发生,我该如何解决?
注意:如果我使用 check_output 结果是一样的
【问题讨论】:
-
如果您在本地运行该 ssh 命令,您会得到完整的文件,还是缺少最后几行?
-
我得到了完整的文件。远程服务器可能正在做一些有趣的事情并且没有以某种方式通过标准输出发送所有内容?
-
如果你运行:
print(repr(subprocess.check_output(shlex.split('ssh <host> "cat text.txt"'))))会发生什么?
标签: python subprocess