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

代わりは。

書式設定演算子には%、左側に書式文字列、右側に引数が必要です。また、引数が1つしかない場合は、括弧は必要ありません。

于 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 に答える