2016-05-15 5 views
0

コードは、私はしかし、それは最後の数行が欠けている、このプログラムは、全体の「TEXT.TXT」ファイルを印刷するために期待されるサブプロセスを作成する方法.Popenはstdout全体を取得しますか?

import subprocess as sp 

a = sp.Popen(['bash', '-c', 'ssh [REDACTED] cat text.txt'], 
      stdout=sp.PIPE, stderr=sp.PIPE)  
print(a.communicate()[0]) 

(プロンプトのpython 2.7に)以下です。

ファイルtext.txtはリモートサーバーにありますが、私はその要点を想定しています。ファイルを取得して、ローカルでsubprocess.Popenを実行すると、期待通りに機能します。

どうして私はそれを修正できますか?

ノート:データサイズが非常に大きい場合、私はdocumentation for communicateによるcheck_output

+0

ローカルでsshコマンドを実行すると、フルファイルを取得するのですか、それとも最後の数行が欠落していますか? – amiller27

+0

私は完全なファイルを取得します。リモートサーバーは面白い何かをしていて、何とかstdoutを通してすべてを送信していないかもしれませんか? –

+0

実行するとどうなりますか? 'print(repr(subprocess.check_output(shlex.split( 'ssh " cat text.txt "')))'? – jfs

答えて

0

使用した場合、結果は同じですが、コマンドを使用すべきではありません。 thisのようなものを試して、問題が解決するかどうか確認してください。

+0

それは解決されておらず、大きさは大きくないはずです(少なくともtxt自体は大量ではありません) –

+0

'text.txt'をローカルに保存して' ssh'コマンドを単に'cat text.txt'? – amiller27

+0

それは期待どおりに動作します。私は全体を得る。 –

関連する問題