2017-09-24 3 views
-3
import os 
os.system("echo \"Hello World\"") 
Hello World 
0 

私はpythonでエコーに引数を送信したいと思います。Pythonから引数をbashに送る方法は?

name ="ok" 
os.system("echo {name}") 

結果は{name}ですが、私は予期していません。
結果としてokを得る方法?
引数{name}の値okをpythonからbashに送信するにはどうすればいいですか?

+1

文字列の書式設定を使用します。Py3.6では、 'f-string'も使用します。 '' os.system( "echo {name}"。format(name = name)) ' – AChampion

+0

一般に文字列の書式設定は安全ではありません。通常、 'echo'で問題に気付くことはありませんが、' name'が1つまたは複数のスペースを含むファイル名である場合、 'os.system(f" ls {name} ")'を考慮してください。 'ls'は部分ファイル名の複数の引数を受け取り、単一の引数としての完全なファイル名は受け取りません。 – chepner

答えて

2

答えはこれはシェルからそれらを保護するために、引用物事を文字列を構築する必要性を回避

subprocess.check_call(["echo",name]) 

を使用することで、os.system()の影響を扱う信号、および誘惑を無視します戻り状態

関連する問題