Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python3命令行参数的字符串注入_Python_Python 3.x_Concatenation - Fatal编程技术网

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

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变量注入到正在打印的字符串中(

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
变量注入到正在打印的字符串中(这样我就不会出现那种看起来很糟糕的
+
连接)?

试试以下方法:

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}执行”