Python3正在从子流程获取输出



我正试图使用Popen将文件从笔记本电脑scp到网络上的设备。这个过程非常直接。。。我可以获得要传输的文件,但无法从命令中获得要显示的输出。我特别想知道完成的百分比。这是我所拥有的:

from subprocess import Popen, STDOUT, PIPE
scp_command = 'scp -i c:<local_key>  <filepath to local file> <user>@<destination_device>:path'
local_scp_command = Popen(scp_command, text=True, stout=PIPE)
output = local_scp_transfer.communicate
print(output)

我已经尝试了stdout和打印输出的多种不同组合。我甚至记不清我尝试过的所有方法了。我想我错过了一些简单的东西。我对编程很陌生,所以即使是简单的事情对我来说也是复杂的。

非常感谢你的帮助!

使用poll()确定流程是否已完成并读取一行:

from subprocess import Popen, STDOUT, PIPE
import shlex
scp_command = 'scp -i c:<local_key>  <filepath to local file> <user>@<destination_device>:path'
local_scp_command = Popen(shlex.split(scp_command), text=True, stdout=PIPE)
while local_scp_command.poll() is None and line := local_scp_command.stdout.readline():
print(line)

我添加了一个shlex.split,因为这是Popen的正确格式。

最新更新