2017-08-28 4 views
0

編集: URLを引用符で囲むと問題が解決しました。解決済み:os.system(py)で起動したときにクロムが完全なURLを開かない

os.systemでchromiumのURLを開き、GET引数をPHPページに渡そうとしました。しかし、クロムは1つ以上の議論を受け入れるか、または認識しないようです。 ?

url = "chromium-browser localhost/index.php?temp=" + str(int(math.floor(get_temperature()))) + "&id=" + get_id() 
print(url) 
os.system(url) 

文字列が印刷されている: クロムブラウザはlocalhost/index.phpを一時= 15 & ID = 10

URLが開かれている: http://localhost/index.php?temp=15

-ravecow

+0

あなたは 'クロムのブラウザを入力した場合あなたのオペレーティングシステムのコマンドラインで「localhost/index.php?temp = 15&id = 10'」と表示されたらどうなりますか? (ヒント:引用符でアンパサンドでパラメータをラップしてみてください) –

+0

問題を修正してラップしてくれてありがとう – ravecow

+0

'+'を使用して連結するのではなく、 '{}' .formatスタイルを使用することをおすすめします:すべての型を文字列に変換するので、あなたはすべての型を文字列に変換します。あなたの議論をラップする必要はありません。 – NuclearPeon

答えて

0

ます」サブシェルにコマンドを渡します。アンパサンドはUnixシェルにとって特別な意味を持ちます。それはputs the preceding command in the backgroundです。

完全には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())) 
関連する問題