хром не открывает полный URL при запуске с os.system (py)

Я попытался открыть 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 в кавычки решила проблему.

0

Решение

Вы передаете команду в подоболочку. Амперсанд имеет особое значение для оболочки 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()))
0

Другие решения

Других решений пока нет …