无法在Python中调用os.system方法中的变量

时间:2016-09-26 09:35:16

标签: python python-2.7

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变量。语法有什么问题吗?

3 个答案:

答案 0 :(得分:1)

ENV的值不会在字符串中被神奇地替换。

请考虑以下事项:

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

因此,您不希望硬编码 ENV作为字符串的一部分,而是使用字符串格式插入ENV的值:

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

但是,subprocess.check_output是您可能希望结帐的更清晰的选择。

答案 1 :(得分: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))

答案 2 :(得分: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))