为了账号安全,请及时绑定邮箱和手机立即绑定

使用字符串vs使用列表的subprocess.call

使用字符串vs使用列表的subprocess.call

动漫人物 2019-09-26 11:04:40
我正在尝试将rsync与subprocess.call一起使用。奇怪的是,如果我传递subprocess.call一个字符串,它可以工作,但是它不能用于列表(ala,Python的文档)。用字符串调用sp.call:In [23]: sp.call("rsync -av content/ writings_raw/", shell=True)sending incremental file list sent 6236 bytes  received 22 bytes  12516.00 bytes/sec total size is 324710  speedup is 51.89Out[23]: 0用列表调用sp.call:In [24]: sp.call(["rsync", "-av", "content/", "writings_raw/"], shell=True)rsync  version 3.0.9  protocol version 30Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.Web site: http://rsync.samba.org/Capabilities:     64-bit files, 64-bit inums, 32-bit timestamps, 64-bit long ints,     socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,     append, ACLs, xattrs, iconv, symtimes rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are welcome to redistribute it under certain conditions.  See the GNUGeneral Public Licence for details.rsync is a file transfer program capable of efficient remote update via a fast differencing algorithm.Usage: rsync [OPTION]... SRC [SRC]... DEST  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST  or   rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST  or   rsync [OPTION]... SRC [SRC]... rsync://[USER@]HOST[:PORT]/DEST  or   rsync [OPTION]... [USER@]HOST:SRC [DEST]   or   rsync [OPTION]... [USER@]HOST::SRC [DEST]   or   rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]The ':' usages connect via remote shell, while '::' & 'rsync://' usages connect to an rsync daemon, and require SRC or DEST to start with a module name.Options  -v, --verbose               increase verbosity -q, --quiet                 suppress non-error messages     --no-motd               suppress daemon-mode MOTD (see manpage caveat)... snipped....                              repeated: --filter='- .rsync-filter'      --exclude=PATTERN       exclude files matching PATTERN     --blocking-io           use blocking I/O for the remote shell -4, --ipv4                  prefer IPv4  -6, --ipv6                  prefer IPv6
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

对我来说,使用shell = True并传递列表而不是字符串看起来是完全坏的,除非列表只有一个元素(即没有参数)。

查看完整回答
反对 回复 2019-09-26
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

推荐的意思是“获得最不令人惊讶的结果”。您可以执行不建议的操作-代码不会阻止您-结果将如我引用的摘录中所述。

查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 360 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信