我正在尝试编写一个Python脚本,该脚本从文件中读取字符串行并执行bash-shell命令,每行作为参数:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
lines = [line.strip() for line in open('/tmp/i586rpm.txt')]
for rpm in lines:
try:
s = os.system("rpm -qip") % lines
except Exception:
print "Something wrong"
但我总是收到错误。我认为% lines
存在问题。
有什么想法吗?
答案 0 :(得分:6)
是的,您没有正确构建命令字符串。尝试:
s = os.system("rpm -qip \"%s\"" % rpm)
答案 1 :(得分:4)
有一些事情可以改进:
os.system
代替subprocess.Popen
(有关详细信息,请查看documentation)rpm
)os.system
的输出字符串格式化为lines
作为参数。我的建议是使用此代码:
for line in lines:
p = subprocess.Popen('rpm -qip {0}'.format(line),
shell=True,
stdout=subprocess.PIPE)
stdout, stderr = p.communicate()
答案 2 :(得分:-1)
而不是
for rpm in lines:
s = os.system("rpm -qip") % lines
这样做
for rpm in lines:
s = os.system('rpm -qip "%s"' % rpm)
编辑更正代码