حدث خطأ أثناء محاولة كتابة معلومات cProfile إلى الملف

StackOverflow https://stackoverflow.com//questions/23035229

  •  21-12-2019
  •  | 
  •  

سؤال

أحاول تحميل ملف تعريف cProfile، وإجراء بعض الفرز والدقة، ثم إخراج النتائج إلى ملف.على أساس توثيق, ، اعتقدت أنه يمكنني ببساطة تمرير كائن ملف وملف 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>''

يجب أن أضيف أيضًا أنه عندما لا أقوم بتمرير كائن إلى معلمة الدفق، يظهر الإخراج كالمعتاد في الوحدة الطرفية.

هل كانت مفيدة؟

المحلول

بالنظر إلى الكود المصدري، سيتعين عليك تمرير الملف كملف 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)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top