Я пытаюсь вызвать следующую команду curl с python:
curl -k -F file=@something.zip -F "data={\\"title\\":\\"Another App\\"}" -Lu usr:pwd https://build.phonegap.com/api/v0/apps
Чтобы это работало, я обнаружил, что json, который я передаю в данные, должен быть экранирован обратной косой чертой.
Я могу вызвать эту команду с помощью ...
os.system(curl -k -F file=@something.zip -F "data={\\"title\\":\\"Another App\\"}" -Lu usr:pwd https://build.phonegap.com/api/v0/apps)
, и она работает.
Однако, когда я пытаюсь использовать модуль подпроцесса, как этот ...
s = 'curl -k -F file=@something.zip -F "data={\\"title\\":\\"Another App\\"}" -Lu usr:pwd https://build.phonegap.com/api/v0/apps'
push = subprocess.Popen(s.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, errors = push.communicate()
print output
... curl не работает, и я получаю сообщение об ошибке из APIиспользуя это, я использую недопустимые параметры, которые я получил в прошлом, когда использовал неправильно экранированный json.
Что здесь происходит?Почему я могу вызвать эту команду с помощью os.system, а не subprocess.Popen?До сих пор моя гипотеза состояла в том, что расщепление что-то портит в строке, но я не нашел ничего, что выглядело неправильно, когда я проверял вывод s.split()
.