ファイルにCPROFile情報を書き込もうとしたときのエラー
-
21-12-2019 - |
質問
CProfileプロファイルをロードしようとしている、ソートとフィネンスを起こしてから、結果をファイルに出力します。 Documentation 、私は単に渡すことができると思いましたファイルオブジェクトとprint_stats
関数はそのストリームにリダイレクトされます。
これは私が使用しようとしているコードです:
import sys,pstats
s = open('output.txt', 'w')
p = pstats.Stats('profile.dat', s)
.
とここに結果のエラーがあります:
TypeError: Cannot create or construct a <class pstats.Stats at 0xbaa870> object from '<open file 'output.txt', mode 'w' at 0xb2ef60>''
.
iがstreamパラメータにオブジェクトを渡さないと、その出力は端末で通常どおりに表示されます。
解決
ソースコードを見ると、ファイルをstream
キーワードのキーワード引数として渡す必要があります(そのように、それがそのように内込されていない理由を明確ではありません)。
p = pstats.Stats('profile.dat', stream = s)
.
インラインコメントの下の下のコメント、およびif "stream" in kwds
行を参照してください。
class Stats:
"""..."""
def __init__(self, *args, **kwds):
# I can't figure out how to explictly specify a stream keyword arg
# with *args:
# def __init__(self, *args, stream=sys.stdout): ...
# so I use **kwds and sqauwk if something unexpected is passed in.
self.stream = sys.stdout
if "stream" in kwds:
self.stream = kwds["stream"]
del kwds["stream"]
if kwds:
keys = kwds.keys()
keys.sort()
extras = ", ".join(["%s=%s" % (k, kwds[k]) for k in keys])
raise ValueError, "unrecognized keyword args: %s" % extras
if not len(args):
arg = None
else:
arg = args[0]
args = args[1:]
self.init(arg)
self.add(*args)
. 所属していません StackOverflow