Python字符串格式

Python字符串格式,python,string-formatting,Python,String Formatting,我正在构建几个命令字符串以传递给os.system。我想把普通的东西组合成一个字符串,然后根据需要添加特定的东西。例如: CMD = "python app.py %s -o %s > /dev/null" option1 = "-i 192.169.0.1" option2 = "results-file" cmd = CMD, (option1, option2) #doesn't work os.system(cmd) 我知道cmd是一个元组。如何使cmd成为所需的命令字符串 cm

我正在构建几个命令字符串以传递给os.system。我想把普通的东西组合成一个字符串,然后根据需要添加特定的东西。例如:

CMD = "python app.py %s -o %s > /dev/null"
option1 = "-i 192.169.0.1"
option2 = "results-file"
cmd = CMD, (option1, option2) #doesn't work
os.system(cmd)
我知道cmd是一个元组。如何使cmd成为所需的命令字符串

cmd = CMD % (option1, option2)
这是可以解释的


这是解释。

您使用
%
运算符

cmd = CMD % (option1, option2)

另请参见:

您使用
%
运算符

cmd = CMD % (option1, option2)

另请参见:

您可以使用字符串
format()
方法来执行此操作,该方法处理:


您可以使用string
format()
方法执行此操作,该方法处理:


为了以防万一,这是一个真实的例子,出于安全原因,您应该避免连接字符串来创建shell命令。使用带有参数列表的
subprocess.call
@乔。说得好。我只是在app.py的单元测试中使用它,所以我想这没关系。@Joe这不仅仅是字符串来自外部的问题。如果它们是这样硬编码的,会出什么问题呢?好吧,对于初学者来说,您可能决定将来从外部获取字符串。或者你可能会在论点上犯错误。这是最安全和最好的做法。它也更容易阅读,并且省去了格式化字符串的麻烦。为了以防万一这是一个真实的例子,出于安全考虑,您应该避免连接字符串来创建shell命令。使用带有参数列表的
subprocess.call
@乔。说得好。我只是在app.py的单元测试中使用它,所以我想这没关系。@Joe这不仅仅是字符串来自外部的问题。如果它们是这样硬编码的,会出什么问题呢?好吧,对于初学者来说,您可能决定将来从外部获取字符串。或者你可能会在论点上犯错误。这是最安全和最好的做法。它也更容易阅读,并且省去了格式化字符串的麻烦。是的,但它只连接了那些字符串,但您想用那些选项字符串替换%s,请欣赏。我将把奖品授予Sebastian P:-),但无论如何还是要感谢。是的,但它只连接了那些字符串,但您想用那些选项字符串替换%s,非常感谢。我会把奖品给Sebastian P:-),不过还是要谢谢你。你应该使用format函数
cmd=“python app.py{0:s}-o{1:s}>/dev/null”。format(option1,option2)
@s.Lott是的,
.format()
绝对更好。但是,您不需要格式字符串中的“:s”-“s”是默认类型。所以只要“{0}-o{1}”就可以了。但是@Joe是对的,子流程是实现这一点的方法!您应该使用format函数
cmd=“python app.py{0:s}-o{1:s}>/dev/null”。format(option1,option2)
@s.Lott是的,
.format()
绝对更好。但是,您不需要格式字符串中的“:s”-“s”是默认类型。所以只要“{0}-o{1}”就可以了。但是@Joe是对的,子流程是实现这一点的方法!