我正在尝试使用子进程通过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
被关闭时出错。
答案 0 :(得分:0)