0
当使用os.system(program file_argument))
通过命令行启动程序并且参数是一个文件(可能有空白)时,将参数发送到其他程序的最佳方式是什么?用反斜杠或在shell中引用进行转义?
我已经看了这些选项:
- 使用
pipes.quote(file_name)
(或shlex.quote(file_name)
为Python 3)产生一个像这样的字符串:'/dir/file with white space'
- 使用
re.escape(file_name)
产生的字符串是这样的:/dir/file\ with\ white\ space
使用这些可能影响被调用的程序的差异是否存在差异? (还有其他选择吗?)还有什么我需要考虑的?
最好的办法是通过'subprocess.call'。您可以传递参数列表,并且引用将自动完成。 –
're.escape'是用于正则表达式转义的。它与你所需要的完全不同。 – user2357112
@ Jean-FrançoisFabre这是误导。使用'subprocess.call([...])''不需要引用*因为不涉及shell; 'subprocess.call'('...',shell = True)''''''''''''''''''''''''''''''''''''你需要像'os.system()一般来说,你应该总是喜欢前者(即如果你没有特别需要,就避免使用shell)。 – tripleee