Я запускаю PHP-скрипт через Python Django, так как он содержит устаревший код для клиента.
Данные передаются в скрипт PHP через JSON, и после того, как скрипт вычислен, строка возвращается для отображения следующим образом.
proc = subprocess.Popen(["php -f script.php " + json.dumps(data_for_php, sort_keys=True)], shell=True, stdout=subprocess.PIPE)
script_response = proc.stdout.read()
return HttpResponse(script_response)
У меня проблема с повреждением данных.
т.е. одно поле JSON из data_for_php
имеет ключ и значение 'xxx_amount': u'$350,000.00',
возвращает ,000.00,
в качестве значения в script_response
.
Он не делает это ни для чего другого.
Я провел небольшую отладку и определил, что json.dumps(data_for_php, sort_keys=True)
не вызывает проблемы, также data_for_php
тоже хорошо.
Это заставляет меня поверить, что эта команда proc.stdout.read()
как-то мутирует $350
в
(пробел).
Примечание: то же самое происходит и для других значений словаря.
Обновление
Меня убеждают, что процесс, который я использую, представляет собой скрипт командной строки внутри Python. Когда команда вызывается, переменные JSON передаются внутри сценария командной строки. Это, вероятно, проблема. Ищем решение.