Я попытался открыть URL в chromium с помощью os.system, передавая GET-аргументы на страницу php. Однако кажется, что хром не принимает и не распознает более одного аргумента.
url = "chromium-browser localhost/index.php?temp=" + str(int(math.floor(get_temperature()))) + "&id=" + get_id()
print(url)
os.system(url)
Строка печатается:
chromium-browser localhost / index.php? temp = 15&ID = 10
Открываемый URL:
HTTP: //localhost/index.php температура = 15
Упаковка URL в кавычки решила проблему.
Вы передаете команду в подоболочку. Амперсанд имеет особое значение для оболочки Unix; Это помещает предыдущую команду в фоновом режиме.
Полностью игнорируя Python, если вы запустите это из командной строки:
chromium-browser localhost/index.php?temp=15&id=10
…вы обнаружите, что он будет выполнять команду:
chromium-browser localhost/index.php?temp=15
…в фоновом режиме, а затем попытайтесь выполнить команду:
id=10
на переднем плане. Последний бит, скорее всего, потерпит неудачу, так как это недопустимая команда, но первая команда будет выполнена успешно.
Чтобы решить проблему, вам нужно убежать от амперсанда; лучший способ сделать это, вероятно, просто заключить весь URL, который вы передаете в кавычки:
chromium-browser "localhost/index.php?temp=15&id=10"
Так что, возможно, что-то вроде этого будет уместно:
command_line='chromium-browser "http://localhost/index.php?temp={0}&id={1}"'
os.system(command_line.format(math.floor(get_temperature()), get_id()))
Других решений пока нет …