Python3命令行参数的字符串注入
Python新手,我有以下脚本:Python3命令行参数的字符串注入,python,python-3.x,concatenation,Python,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变量注入到正在打印的字符串中(
#!/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
变量注入到正在打印的字符串中(这样我就不会出现那种看起来很糟糕的+
连接)?试试以下方法:
print('Executing against {}'.format(env))
试试这个:
print('Executing against {}'.format(env))
+
的问题是第二个参数必须是字符串,否则会引发错误。如果这不是问题,那么使用+
就可以了。但是,还有其他更惯用的方式:
1.)print函数可以接受多个参数,这些参数用空格连接:
print('针对环境执行)
2.“旧式”插值:
print('针对%s“%env”执行)
右侧也可以在元组中接受多个参数。因此,为了防止参数本身可能是元组,通常将变量放在元组中:
print('针对%s%%(env,)执行)
3.)更现代的方法是使用.format
及其生态系统(有神奇的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
print('针对{}.format(env)执行)
4.)Python3.6及以上版本:.format()
的语法糖。现在,通过将字符串设置为格式字符串(前缀为f
),您可以直接将变量甚至整个表达式放入字符串中:
print(f'Executing on{env}')
第二个参数必须是字符串,否则会引发错误。如果这不是问题,那么使用+
就可以了。但是,还有其他更惯用的方式:
1.)print函数可以接受多个参数,这些参数用空格连接:
print('针对环境执行)
2.“旧式”插值:
print('针对%s“%env”执行)
右侧也可以在元组中接受多个参数。因此,为了防止参数本身可能是元组,通常将变量放在元组中:
print('针对%s%%(env,)执行)
3.)更现代的方法是使用.format
及其生态系统(有神奇的\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
print('针对{}.format(env)执行)
4.)Python3.6及以上版本:.format()
的语法糖。现在,通过将字符串设置为格式字符串(前缀为f
),您可以直接将变量甚至整个表达式放入字符串中:
print(f'Executing from{env}')
您可以使用.format
如果您将“+”替换为逗号,并删除“反对”后的尾随空格,则效果相同。您也可以使用str.format,如下所述:注意推荐f字符串的链接问题的答案。它们可能是格式化字符串的最简单方法,但仅在Python3.6++f“对{env}执行”中可用。
您可以使用.format
如果将“+”替换为逗号并删除“对”后的尾随空格,则效果相同。您也可以使用str.format,如下所述:注意推荐f字符串的链接问题的答案。它们可能是格式化字符串的最简单方法,但仅在Python3.6+f“针对{env}执行”