Странное Python поведение цитирования подпроцесса - PullRequest
1 голос
/ 18 апреля 2020

Я хотел использовать use subprocess.Popen, потому что моя программа устанавливает кучу параметров командной строки и переменных среды для запускаемой программы.

import subprocess, os
s = r'-a"abc\def"'
x = ['cmd', '/c', 'echo', s ]
y = ' '.join( x )
print('y: ', y )
os.system( y )
print('x: ', x )
print('cmdline: ', subprocess.list2cmdline( x ))
subprocess.call( x, shell=False )
subprocess.call( x, shell=True )
subprocess.Popen( x )

Но приведенная выше (уменьшенная) программа показывает что если в одном или нескольких параметрах есть встроенные кавычки, то обработка командной строки, выполняемая подпроцессом, является неправильной, тогда как os.system работает нормально. Есть ли решение? Я не смог найти его в документации по подпроцессам: пример, показывающий, как преобразовать os.system в подпроцесс, имеет ту же проблему, AFAICT. (Проблема здесь заключается в добавлении \ перед "символами".)

Windows 10, Python 3.8.0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...