我正在尝试在Bash上运行脚本,以便将文件从本地计算机传输到网络上的远程计算机。 bash命令是 :
scp \local\path\ user@remoteip:\path\to\copy\onremote
到目前为止,这个工作正常,所以我想我会使用python脚本自动化它。 这就是我想出的:
import subprocess
direct = input("Enter path to directory: ")
send = "scp " + direct + " user@remoteip:\path\to\copy\onremote"
subprocess.Popen(send)
出于某种原因,它没有用,有什么想法吗?
答案 0 :(得分:2)
这里的问题是Popen()需要一个列表。因此,解决方案是将字符串拆分为其空格formatted = send.split(" ")
。根据使用Popen()或call()的问题,这里有一个很好的答案,详细说明了这些差异。What's the difference between subprocess Popen and call (how can I use them)?
这是一个适合我的东西,使用subprocess call()。
from subprocess import call
direct = input("Enter path to directory: ")
send = "scp" + direct + " user@remoteip:\path\to\copy\onremote"
formatted = send.split(" ")
call([formatted])
答案 1 :(得分:1)
建议您将参数列表传递给
subprocess.Popen(["scp", "-r", "path", ...])
。
但是,如果您仍想传入整个字符串,请传递一个可选的shell参数,例如
subprocess.Popen(send, shell=True)
。