Python 使用shlex拆分带空格和撇号的命令
我的python脚本有问题。我想将文件从服务器下载到NAS。我的脚本正在下载每个文件,但包含单引号/apastrophes和/或空格的文件除外。我已经知道问题出在哪里了,但我无法解决它。问题在于Python 使用shlex拆分带空格和撇号的命令,python,Python,我的python脚本有问题。我想将文件从服务器下载到NAS。我的脚本正在下载每个文件,但包含单引号/apastrophes和/或空格的文件除外。我已经知道问题出在哪里了,但我无法解决它。问题在于shlex.split()命令。它只是删除单引号。我也调查了paramiko,但它有点大文件,所以这对我不起作用。我也对完全不同的方法持开放态度 我还想知道是否有可能得到该命令的返回,这样我就知道scp成功下载了我的文件,或者它失败了 import subprocess import shlex
shlex.split()
命令。它只是删除单引号。我也调查了paramiko,但它有点大文件,所以这对我不起作用。我也对完全不同的方法持开放态度
我还想知道是否有可能得到该命令的返回,这样我就知道scp成功下载了我的文件,或者它失败了
import subprocess
import shlex
def download(download_path, remote_path):
command = "sshpass -p %s scp -o StrictHostKeyChecking=no -r %s@%s:%s %s" %\
(ssh_password, ssh_user, host, remote_path, download_path)
args = shlex.split(command)
# call scp
p = subprocess.Popen(args, stdout=subprocess.PIPE, bufsize=1)
for line in iter(p.stdout.readline, b''):
print line,
p.stdout.close()
p.wait()
旁白:已经有一个主题有类似的问题,我无法工作 您不会得到需要拆分的任意字符串;您基本上是从单个单词开始,然后自己连接它们。不要那样做;只需将
命令
列成一个列表即可
command = [
"sshpass", "-p", ssh_password,
"scp", "-o", "StrictHostKeyChecking=no", "-r",
"%s@%s:%s" % (ssh_user, host, remote_path),
download_path
]
p = subprocess.Popen(command, stdout=subprocess.PIPE, bufsize=1)
请尝试
shlex.split(command,posix=False)
@Peter感谢您的快速回复。我尝试了一下,发现了一个新错误:bash:-c:line 0:在查找匹配项时出现意外的EOF
'`bash:-c:line 1:语法错误:意外的文件结尾