В настоящее время я ищу Popen
для автоматизации сжатия & хранения документов.Использование subprocess.Popen (shell = True) с папками Windows
Для части сжатия, я думал о следующей строке Python:
subprocess.Popen("WinRAR.exe a -r c:\\03. Notes\\AllTexts *.txt", shell=True)
Я постоянно имея сообщения об ошибках, так как команда не в состоянии иметь дело с именем папки, которая содержит пробел (03. Notes
). Этот вопрос задавался несколько раз, и я должен сказать, что я пробовал все предложения: необработанная строка, двойные кавычки, тройные кавычки ... Ни один из них не работал.
Поскольку я не могу изменить имена папок, и у меня больше нет идей, попросите кого-нибудь сообщить, как я могу успешно передать эту командную строку?
Почему вы используете 'ш ell = True? вообще? Не могли бы вы использовать вызов 'list' (с модулем' glob' для расширения вашего glob) и позволить Python делать необходимые преобразования/экранирование автоматически, не используя 'shell = True'? – ShadowRanger
Нет причин использовать оболочку для этой команды. Используйте список аргументов без оболочки, например. 'subprocess.check_call ([" WinRAR.exe "," a "," -r ", r" C: \ 03. Notes \ AllTexts "," * .txt "])'. – eryksun
Спасибо за этот намек. Check_call имеет большой смысл, поскольку список аргументов намного длиннее, чем в моем примере. Я не знаю, как отметить ваш комментарий, имеет ценный ответ, но это действительно помогло. Это восстановило надежду в моем проекте автоматизации :-) – JCF