14.6.2 为shell建立安全的字符串
quote()函数可以完成逆向的操作,对现有的引号转义,并为字符串增加缺少的引号,使它们能够安全地用在shell命令中。
import shlex
examples = [
"Embedded'SingleQuote",
'Embedded"DoubleQuote',
'Embedded Space',
'-SpecialCharacter',
r'Back\slash',
]
for s in examples:
print('ORIGINAL : {}'.format(s))
print('QUOTED : {}'.format(shlex.quote(s)))
print()
通常更安全的做法是在用subprocess.Popen时使用一个参数列表。不过,如果无法做到这一点,那么在这种情况下,quote()可以通过确保对特殊字符和空白符正确地加引号来提供一些保护。