如何向Python子进程提交多个命令?

时间:2015-09-25 14:19:23

标签: python subprocess sftp

我正在尝试使用子进程通过sftp与某些文件进行交互。我可以让它连接并执行一个命令,但随后进程终止。如何保持对此过程的控制并继续在sftp中移动?

import os
import subprocess

serverFiles = 'sftp.servername.com'
userFiles = 'myusername'
keyfileFiles = 'C:\\key\\file\\path'


with subprocess.Popen(['sftp','-Q','-i',keyfileFiles,userFiles+'@'+serverFiles], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT) as proc:
    (out, err) = proc.communicate(input='ls -l'.encode())
    print(out.decode())
    #process dies. cannot proc.stdin.write, cannot proc.communicate

我的输出显示欢迎横幅,然后显示顶级文件夹中的ls,然后结束该过程并且任何后续命令在proc被关闭时出错。

1 个答案:

答案 0 :(得分:0)