楼主: 379549531
5038 1

[问答] __init__() missing 1 required positional argument: 'handler'怎么处理 [推广有奖]

  • 0关注
  • 0粉丝

高中生

2%

还不是VIP/贵宾

-

威望
0
论坛币
4459 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
106 点
帖子
7
精华
0
在线时间
24 小时
注册时间
2021-4-26
最后登录
2022-8-6

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
小白使用rotator函数出现__init__() missing 1 required positional argument: 'handler'错误,请问应该怎么处理?
'''Our rotator classes'''

import re
import sys
import signal
import logging
import logging.handlers


class Rotator(object):
    '''Base class for all rotators'''
    def __init__(self, handler, fin=sys.stdin):
        self.fin = fin
        # Set up the level and formatter
        self.handler = handler
        self.handler.setFormatter(logging.Formatter('%(message)s'))
        self.handler.setLevel(logging.DEBUG)

        # Attach it to the logger
        self.logger = logging.getLogger('rotator')
        self.logger.addHandler(self.handler)
        self.logger.setLevel(logging.DEBUG)

    def reopen(self, handler):
        '''Replace our existing handler with this new one'''
        # This /could/ result in duplicate records, though it's unlikely. It's
        # also preferred to missing records
        self.logger.addHandler(handler)
        self.logger.removeHandler(self.handler)
        self.handler = handler

    def lines(self, buffered=False):
        '''Generator for all the lines from stdin'''
        while True:
            try:
                if buffered:
                    for line in self.fin:
                        yield line.strip('\n')
                    # When we're done yielding lines, break
                    break
                else:
                    line = self.fin.readline()
                    while line:
                        yield line.strip('\n')
                        line = self.fin.readline()
                    # When we're done reading lines, break
                    break
            except IOError as exc:  # pragma: no cover
                print('Warning: %s'% exc)

    def run(self, buffered=False):
        '''Repeat lines from stdin to the logger'''
        for line in self.lines(buffered):
            self.logger.debug(line)


class Watched(Rotator):
    '''Watched file handler'''
    def __init__(self, path, mode='a', fin=sys.stdin):
        Rotator.__init__(
            self, logging.handlers.WatchedFileHandler(path, mode), fin)


class Signaled(Rotator):
    '''Signaled handler'''
    def __init__(self, path, mode='a', sig='HUP', fin=sys.stdin):
        if not hasattr(signal, 'SIG' + sig):
            raise ValueError('No such signal SIG%s' % sig)
        self.signal = getattr(signal, 'SIG' + sig)
        self.path = path
        Rotator.__init__(self, logging.FileHandler(path, mode))

    def handle(self, signum, frame):
        '''Rotate our file'''
        self.reopen(logging.FileHandler(self.path))

    def run(self, *args, **kwargs):
        '''Repeat lines from stdin to the logger'''
        signal.signal(self.signal, self.handle)
        Rotator.run(self, *args, **kwargs)


class Rotated(Rotator):
    '''Self-rotating handler'''
    def __init__(self, path, mode='a', size=None, count=None, fin=sys.stdin):
        size = self.parse_size(str(size or 0))
        count = count or 5
        Rotator.__init__(self,
            logging.handlers.RotatingFileHandler(path, mode, size, count), fin)

    @classmethod
    def parse_size(cls, size):
        '''Return a size in bytes'''
        regex = r'\s*(\d+)\s*([kKmMgG][bB])?\s*$'
        match = re.match(regex, size)
        if not match:
            raise ValueError('%s does not match %s' % (regex, size))
        size = int(match.group(1))
        units = match.group(2)
        if not units:
            return size
        if units.lower() == 'kb':
            return size * 1024
        elif units.lower() == 'mb':
            return size *  1024 * 1024
        elif units.lower() == 'gb':
            return size * 1024 * 1024 * 1024


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Positional argument position required require

沙发
chenglinz 学生认证  发表于 2022-3-14 10:25:35 |只看作者 |坛友微信交流群
感觉实在继承的时候,你的初始化函数中的参数handler未赋值

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-5 12:44