Python3命令行参数的字符串注入

时间:2018-06-25 17:32:07

标签: python-3.x concatenation

Python的新手,我有以下脚本:

#!/usr/bin/env python3
import sys

env = sys.argv[1:]  # The name of the environment we're executing over ('Dev', 'Test', 'Prod', etc)

print('Executing against ' + env)

上面,应使用env参数调用脚本,然后将其输出到STDOUT。

是否有更优雅的方法将env变量注入到要打印的字符串中(所以我没有那种看上去很讨厌的+串联)?

2 个答案:

答案 0 :(得分:1)

尝试一下:

print('Executing against {}'.format(env))

答案 1 :(得分:1)

+的问题在于第二个参数必须是字符串,否则会引发错误。如果这不是问题,则可以使用+。但是,还有其他通常更惯用的方式:

1。)打印函数可以采用多个参数,这些参数用空格连接:

print('Executing against', env)

2。)“旧式”插值:

print('Executing against %s' % env)

右侧也可以在元组中使用多个参数。因此,为了防止参数成为元组本身的可能性,通常应始终将变量放在元组中:

print('Executing against %s' % (env,))

3。)更现代的方法是使用.format及其生态系统(有神奇的__format__方法,您通常不需要了解的东西,但通常会给您带来很大的灵活性):

print('Executing against {}'.format(env))

4。)Python 3.6及更高版本:.format()的语法糖。现在,您可以将变量,甚至整个表达式直接放入字符串中,方法是将其设置为格式字符串(以f开头):

print(f'Executing against {env}')