在Python输出中引用POSIX shell特殊字符

时间:2010-04-22 17:01:17

标签: python shell posix escaping special-characters

有时我会自动从Python创建小型shell脚本,并且我想确保文件名参数不包含非转义特殊字符。我已经推出了自己的解决方案,我将作为答案提供,但我几乎可以肯定,我已经看到这样的功能在标准库中丢失了。 “丢失”我的意思是我没有在shlexcmdsubprocess等显而易见的模块中找到它。

你知道stdlib中有这样的功能吗?如果是的话,它在哪里?

即使是否定的(但明确且正确的)答案也将被接受。

2 个答案:

答案 0 :(得分:6)

pipes.quote()

>>> from pipes import quote
>>> quote("""some'horrible"string\with lots of junk!$$!""")
'"some\'horrible\\"string\\\\with lots of junk!\\$\\$!"'

虽然注意到它可能会出现一个错误,其中零长度的arg将不会返回任何内容:

>>> quote("")
''

如果它返回'""'可能会更好。

答案 1 :(得分:1)

我使用的功能是:

def quote_filename(filename):
    return '"%s"' % (
        filename
        .replace('\\', '\\\\')
        .replace('"', '\"')
        .replace('$', '\$')
        .replace('`', '\`')
    )

即:我总是用双引号括起文件名,然后在双引号内引用特殊字符。