Как передать переменную из Python в PHP?
Нужно передать в 10.php переменную hash из файла pyphp.py:
import subprocess
result = subprocess.run(
['php', './10.php'], stdout=subprocess.PIPE, check=True)
res = (result.stdout)
res = str(res)
warn = res
hash = 'g8sfgnvsf0g8'
file_hash = open("hash.txt", "w")
file_hash.write(hash)
file_hash.close()
print(warn)
10.php:
<?php
$hash = file_get_contents('hash.txt');
echo $hash;
При изменении переменной hash, правильный результат выдается только со второго запуска скрипта. В первый раз warn остается тем же.
Было hash = 'g8sfgnvsf0g8', изменил на '1000' и запустил pyphp.py два раза
Пробовал добавлять третий аргумент file_hash = open("hash.txt", "w", 0), но выдается ошибка ValueError: can't have unbuffered text I/O.
Как сделать так, чтобы Python сразу записывал значение в файл? Либо как передать переменную другим способом?
Ответы (1 шт):
Вот такой пример можно использовать:
subprocess.call(["php","-f","test.php","param0:value0", "param1:value1"])
В самом PHP используйте переменную $argv для работы с аргументами строки. Или можно попробовать работать с JSON форматом. На Python пишите:
subprocess.call(["php","-f","test.php", json.dumps(your_dictionary)])
А на самом PHP получаете так:
if ($argc > 1) {
$json_str = $argv[1];
$_GET = json_decode($json_str);
}