Цитировать Цитировать POSIX shell специальные символы на выходе Python

Бывают случаи, когда я автоматически создаю небольшие сценарии оболочки из Python, и я хочу убедиться, что аргументы имени файла не содержат неэкранированных специальных символов. Я выполнил свое собственное решение, которое я дам в качестве ответа, но я почти уверен, что видел такую ​​функцию, потерянную где-то в стандартной библиотеке. Под «потерянным» я подразумеваю, что не нашел его в очевидном модуле, shlex как shlex , cmd или subprocess .

Вы знаете о такой функции в stdlib? Если да, то где это?

Даже отрицательный (но определенный и правильный ответ) будет принят.

    pipes.quote() :

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

    Хотя обратите внимание, что у него, возможно, есть ошибка, где arg с нулевой длиной ничего не вернет:

     >>> quote("") '' 

    Вероятно, было бы лучше, если бы оно вернулось.

    Функция, которую я использую:

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

    то есть: я всегда добавляю имя файла в двойные кавычки, а затем цитирую только специальные символы внутри двойных кавычек.