-3

我正在尝试通过使用带有 % 的用户定义字符串来打开一个带有 exe 的文件,这对我来说永远不起作用。我试过 os.system 和 os.popen。我不断收到这个
TypeError: unsupported operand type(s) for %: 'file' and '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)
4

3 回答 3

2

尝试

os.popen('%r' % which)

反而。

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

于 2012-10-10T09:27:54.563 回答
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 帮助文档中。

于 2012-10-10T09:32:38.377 回答
1

如果您使用该subprocess模块而不是已弃用的方式进行调用,则可以避免此问题并拥有更简洁的程序。

于 2012-10-10T09:45:11.287 回答