У меня есть простой скрипт Python:Подпроцесс python.Popen принимает пространство в пути?
log("Running command: " + str(cmd))
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE, close_fds=close_fds)
Я выполняющийся его на Windows, на том же питона версии 2.6.1, но на разных виртуальных машинах. Один из них - Windows Server 2008 Enterprise, второй - Windows Server Enterprise, и я получил ошибку на только один из них.
Бревно с Windows Server Enterprise:
Running command: C:\Program File\MyProgram\program.exe "parameters"
Error: 'C:\\Program' is not recognized as an internal or external command
Бревна с Windows Server 2008 Enterprise:
Running command: C:\Program File\MyProgram\program.exe "parameters"
...
ошибка происходит только для одной среды. Я знаю, что путь должен быть экранирован, но как возможно, что subprocess.Popen
может обрабатывать путь с пространством и без экранирования?
Связанные/тождественны http://stackoverflow.com/questions/804995/how-to-use-subprocess-when-multiple -arguments-contains-spaces – beroe
- это cmd строка или список строк? – tdelaney
@beroe похоже, но не то же самое. В моем случае у меня есть только один код, который работает по-другому, иногда он может обрабатывать путь с пробелами, иногда нет, я пытаюсь понять, почему. – erkfel