2016-09-26 71 views
-2
ENV=raw_input("Enter Environment (QA/Prod):") 
print(ENV) 
os.system('aws ec2 describe-instances --filters "Name=tag:Environment,Values=ENV" "Name=instance-state-code, Values=16" > FilteredOP') 

嗨, 我很喜歡Python。這裏, 我無法在os.system命令中調用ENV變量。語法有什麼問題嗎?無法在Python中調用os.system方法中的變量

回答

1

ENV的值不會在字符串中像魔術一樣被替換。

考慮以下幾點:

>>> ENV = 'debug' 
>>> 
>>> 'Value=ENV' 
'Value=ENV' 
>>> 
>>> 'Value={}'.format(ENV) 
'Value=debug' 

所以不是硬編碼ENV作爲字符串的一部分,你想用字符串格式化插入的ENV值:

os.system('...Values=.{}...'.format(ENV)) 

然而,subprocess.check_output是一個更清潔的選擇,你可能想檢查出

0

閱讀關於格式化輸出,在您的ENV視爲字符串「ENV」。

ENV=raw_input("Enter Environment (QA/Prod):") 
print(ENV) 
os.system('aws ec2 describe-instances --filters "Name=tag:Environment,Values={}" "Name=instance-state-code, Values=16" > FilteredOP'.format(ENV)) 
0

試試這個

ENV=raw_input("Enter Environment (QA/Prod):") 
    print(ENV) 
    os.system('aws ec2 describe-instances --filters "Name=tag:Environment,Values=%s" "Name=instance-state-code, Values=16" > FilteredOP'%(ENV))