python和list from list作为参数

时间:2012-01-16 12:19:33

标签: python

我正在尝试编写一个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存在问题。

有什么想法吗?

3 个答案:

答案 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) 

编辑更正代码