使用百分号登录os.system或os.popen错误

时间:2012-10-10 09:24:44

标签: python

我正在尝试使用带有%的用户定义字符串打开带有exe的文件,这对我来说无效。我试过os.system和os.popen。我一直得到这个 TypeError:%:'file'和'str'

的不支持的操作数类型

我该怎么做才能让它发挥作用?

def showhelp():
 defaulteditor = "notepad.exe"
 print "[*] Which text viewer do you want to use? [default: notepad]"
 which = raw_input("\n\n\ntype n for notepad, or specify program.exe  >     ")
 if which != "n":
    os.popen('notepad ./help.txt')
else:
    os.popen('%r')%(which)

3 个答案:

答案 0 :(得分:2)

尝试

os.popen('%r' % which)

代替。

%格式化运算符需要左侧的格式字符串和右侧的参数。此外,如果它只是一个参数,则不需要括号。

答案 1 :(得分:1)

也许这有助于回答你的问题:

>>> def printy(string):
    print string


>>> printy("hello %s" % "world")
hello world
>>> printy("hello %s") % "world"
hello %s

Traceback (most recent call last):
  File "<pyshell#278>", line 1, in <module>
    printy("hello %s") % "world"
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
>>> 

如您所见,您未在正确的位置包含%运算符或其补充。

您甚至可以查阅这些文档:http://docs.python.org/release/2.4.4/lib/typesseq-strings.html

也包含在python附带的python帮助文档中。

答案 2 :(得分:1)

如果您使用subprocess module而非弃用的方式拨打电话,则可以避免此问题,并拥有更清晰的程序。