使用带有windows文件夹的subprocess.Popen(shell = True)

时间:2016-11-29 23:23:27

标签: python windows python-3.x subprocess popen

我目前正在考虑Popen自动化压缩&存储文件。

对于压缩部分,我想到了以下Python行:

subprocess.Popen("WinRAR.exe a -r c:\\03. Notes\\AllTexts *.txt", shell=True)

我一直有错误消息,因为该命令无法处理包含空格(03. Notes)的文件夹名称。 这个问题在几次之前被问过,而且,我必须说我尝试了所有的命题:原始字符串,双引号,三引号,......它们都没有奏效。

由于我无法更改文件夹名称,并且我没有更多想法可以尝试,有人可以建议我怎样才能成功通过此命令行?

1 个答案:

答案 0 :(得分:1)

在Windows中,您应该使用引号作为文件名或目录名(如果您想在其中使用空格)。在Python中,您应该使用\符号来转义引号(如果您在"引号中使用字符串)。像这样:

"my name is \"Mark\"!"

或者只是:

'my name is "Mark"!'

所以这将按预期工作:

subprocess.Popen("WinRAR.exe a -r \"c:\\03. Notes\\AllTexts\" *.txt", shell=True)

以及:

subprocess.Popen('WinRAR.exe a -r "c:\\03. Notes\\AllTexts" *.txt', shell=True)