You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从列表/字符串向subprocess.run传递rsync子进程参数?

解决rsync子进程参数传递问题

要批量传递参数给rsync子进程,核心是让每个命令行参数成为subprocess.run()列表中的独立元素,以下是正确的实现方式:

方法1:列表拼接(推荐,适用于参数已为列表的情况)

直接将rsync命令、参数列表、目录参数拼接成一个完整的参数列表:

args = ['--progress', '-avh']
subprocess.run(['rsync'] + args + [loaded_prefs['src_dir'], loaded_prefs['dst_dir']])

方法2:字符串安全拆分(适用于参数为空格分隔字符串的情况)

如果参数是单个空格分隔的字符串,用shlex.split()安全拆分后再拼接(能处理带空格的参数):

import shlex

args_str = '--progress -avh'
subprocess.run(['rsync'] + shlex.split(args_str) + [loaded_prefs['src_dir'], loaded_prefs['dst_dir']])

为什么之前的写法失效?

  • 将多个参数合并为单个字符串(如args = '--progress -avh'):subprocess.run()会把整个字符串当作rsync的单个参数,rsync无法识别--progress -avh这个无效选项。
  • 用,连接列表元素(如','.join(args)):生成的--progress,-avh仍是单个参数,rsync同样无法解析为两个独立选项。

内容的提问来源于stack exchange,提问作者Chris Barrett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:27:03