在os.system中执行命令时使用python变量

1 投票
2 回答
9764 浏览
提问于 2025-04-17 18:43

Python让我头疼;我总是很难在PATH中使用变量。我的版本是 Python 2.4.3

>>> import os
>>> a = "httpd"
>>> cmd = '/etc/init.d/+a restart'
>>> print cmd
/etc/init.d/+a restart
>>>

我该怎么把 /etc/init.d/httpd 放进 cmd 这个变量里,这样我就可以用 os.system(cmd) 呢?

2 个回答

2

你需要类似这样的东西:

cmd = '/etc/init.d/%s restart' % a

如果你需要进行多次替换,可以这样做:

cmd = '/etc/init.d/%s %s' % ( 'httpd', 'restart' )

在这个形式中,'%s' 是一个占位符。每个 '%s' 会被右边对应的 tuple 中的一个项目替换掉,这个 % 操作符可以理解为字符串插值的操作符。更多详细信息可以在这个参考文档的字符串格式化部分找到。

从 python2.6 开始,有了一种新的字符串格式化方法,叫做 .format,不过我想这对你帮助不大。

3

对于 Python 版本大于 2.7 的情况

cmd = '/etc/init.d/{} restart'.format(a)

或者

cmd = '/etc/init.d/'+a+' restart'

不过你可能应该考虑使用 subprocess 这个模块。

撰写回答