wget 缺少 shlex 和子进程 url
wget missing url with shlex and subprocess
我很难理解为什么这会失败并出现 wget: missing URL
错误:
import shlex
import subprocess
copy_command = "wget -O - 'http://example.com/somepath/somefile.txt?someparam=test' | sshpass -p pass ssh user@localhost -p 2222 \"cat - > /upload/somefile.txt\""
cmd = shlex.split(copy_command, posix=False)
with subprocess.Popen(
cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True
) as proc:
output, error = proc.communicate()
我在这里错过了什么?如果我直接给子进程 copy_command
字符串,那么它可以正常工作。
要设置管道,需要父进程生成所有涉及的程序并将一个程序的 stdio 连接(管道)到另一个。
subprocess 的 Python 文档解释了如何执行此操作。
它与字符串参数和shell=True
一起工作,因为它只是将命令行传递给子shell,然后shell处理所有这些细节。
我很难理解为什么这会失败并出现 wget: missing URL
错误:
import shlex
import subprocess
copy_command = "wget -O - 'http://example.com/somepath/somefile.txt?someparam=test' | sshpass -p pass ssh user@localhost -p 2222 \"cat - > /upload/somefile.txt\""
cmd = shlex.split(copy_command, posix=False)
with subprocess.Popen(
cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True
) as proc:
output, error = proc.communicate()
我在这里错过了什么?如果我直接给子进程 copy_command
字符串,那么它可以正常工作。
要设置管道,需要父进程生成所有涉及的程序并将一个程序的 stdio 连接(管道)到另一个。
subprocess 的 Python 文档解释了如何执行此操作。
它与字符串参数和shell=True
一起工作,因为它只是将命令行传递给子shell,然后shell处理所有这些细节。