2016-07-21 47 views
0

我有一个django服务器,我必须通过scp上传一些数据。我有这样的观点:从python捕获scp的输出

pathFile = '/home/user1/foo.json' 
user = 'user1scp' 
server = 'someserver.com' 
pathServer = '/var/www/foo.json' 

os.system("scp %s %[email protected]%s:%s" % (pathFile, user, server, pathServer)) 

在控制台窗口的页面运行的位置(即在那里我所谓的命令“的runserver”)我已经展示了这个输出:

[21/Jul/2016 18:55:12] "GET /someurl/upload HTTP/1.1" 301 0 
foo.json           100% 609  0.6KB/s 00:00 

我希望能够来操纵那个输出,所以我可以通知用户所有的文件(有多个文件要上传)是正确上传的,或者哪些不是。

我想在这个答案How to capture stdout output from a Python function call?的解决方案,但没有奏效。我试过Popen和子过程,但也没有结果。也许我做错了什么?

回答

1

这不会直接回答你的问题,但我不会在python中执行raw scp命令,因为即使你有它,输出也很难解析。你应该考虑使用像fabric这样的工具来处理这个问题。这是pythonic,你可以完全控制输入/输出。与scp相同的操作是put。举个例子,你可以检查这个SO answer

几乎所有的命令行操作都可以使用fabric来完成,您不会后悔学习它。