У меня есть программа python, которая должна рассчитывать изменения на основе значения, записанного во временном файле (например, «12345 \ n»). Это всегда целое число.
Я пробовал разные методы для чтения файла, но python не смог его прочитать. Итак, у меня возникла идея выполнить команду оболочки («cat»), которая будет возвращать содержимое. Когда я выполняю это в оболочке, все работает нормально, но python обратная связь, которую я получаю, пуста. Затем я попытался написать bash, а затем php сценарий, который будет читать файл и затем возвращать значение. В python я вызывал их через оболочку, и получаемые отзывы тоже были пустыми.
Мне было интересно, не было ли это общей проблемой в python, и заставил мои скрипты возвращать содержимое других временных файлов , который работал нормально. Внутри моих скриптов я мог выполнять вычисления со значением, а в оболочке вывод получился именно таким, как ожидалось, но не при вызове через python. Я также заметил, что я не получаю значение с моими дополнительными сценариями, когда они вызываются phython (я пытался записать его в другой файл; он был обновлен, но пуст).
Файл, который я пытаюсь read находится в каталоге / tmp и записывается в несколько раз в секунду другим скриптом. Я ищу решение (открытое для новых идей), в котором я получаю значение файла в переменной python.
Спасибо за помощь
Вот мои программы :
python:
# python script
import subprocess
stdout = subprocess.Popen(["php /path/to/my/script.php"], shell = True, stdout = subprocess.PIPE).communicate()[0].decode("utf-8")
# other things I tried
#with open("/tmp/value.txt", "r") as file:
# stdout = file.readline() # output = "--"
#stdout = os.popen("cat /tmp/value.txt").read() # output = "--"
#stdout = subprocess.check_output(["php /path/to/my/script.php"], shell = True, stdout = subprocess.PIPE).decode("utf-8") # output = "--"
print(str("-" + stdout + "-")) # output = "--"
php:
# php script
valueFile = fopen("/tmp/value.txt", "r");
value = trim(fgets($valueFile), "\n");
fclose($valueFile);
echo $value; # output in the shell is the value of $value
Редактировать: контекст: мой python скрипт запускается другим python скриптом , который слушает команды с сервера apache на пи. Значение, которое я хочу прочитать, исходит от устройства «1wire», которое прослушивает S0-сигналы.