我正在尝试使用带有%的用户定义字符串打开带有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)
答案 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而非弃用的方式拨打电话,则可以避免此问题,并拥有更清晰的程序。