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

現在我想的參數發送到回聲蟒。如何從python發送參數到bash中?

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

結果是{name},不是我所期望的。
如何獲得ok
如何發送參數(名稱)的值ok到bash的蟒蛇?

+1

使用字符串格式化,在Py3.6也使用'F-string',例如'使用os.system(F 「回波{名稱}」)',在早期形式的Python'使用os.system的( 「回波{名稱}」。格式(名稱=名))' – AChampion

+0

通常,字符串格式化也不安全。您通常不會注意到'echo'的問題,但如果'name'是一個文件名,並且有一個或多個空格,請考慮'os.system(f「ls {name}」)「。 'ls'將接收部分文件名的多個參數,而不是整個文件名作爲單個參數。 – chepner

回答

2

答案是使用

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

這避免了需要構造一個字符串,報價的事情,以保護他們免受外殼,信號處理的os.system()效果,誘惑忽略返回狀態。