AudioSegment.from_file перезаписан по какой-то причине? - PullRequest
0 голосов
/ 04 февраля 2019

Я использую в своей программе функцию AudioSegment.from_file: sound = AudioSegment.from_file(audio_path, format="m4a")

Я также реализую созданный мной файл: import GUI_log

В этом файле у меня есть следующий класс:

class TextHandler(logging.Handler):
    """This class allows you to log to a Tkinter scroll_text or Scrolledscroll_text widget"""
    def __init__(self, scroll_text):
        # run the regular Handler __init__
        logging.Handler.__init__(self)

        # Store a reference to the scroll_text it will log to
        self.scroll_text = scroll_text

    def emit(self, record):
        msg = self.format(record)
        tag = ""
        if record.levelno == ACTION:
            tag = "ACTION"
        def append():
            self.scroll_text.configure(state='normal')
            self.scroll_text.insert(Tkinter.END, msg + '\n', tag)
            self.scroll_text.configure(state='disabled')
            # Autoscroll to the bottom
            self.scroll_text.yview(Tkinter.END)     
        # This is necessary because we can't modify the scroll_text from other threads
        self.scroll_text.after(0, append)

По какой-то причине, когда я выполняю первую упомянутую мной строку (ту, что с from_file), выполняется функция emit в классе TextHandler.

Кто-нибудь знает, в чем причина и как это исправить?

РЕДАКТИРОВАТЬ: я обнаружил, что я перезаписать где-то в этом коде:

# Create Tkinter object and ScrolledText
    root =Tkinter.Tk()
    st = ScrolledText.ScrolledText(root, state='disabled')
    st.configure(font='TkFixedFont')
    st.pack()
    st.tag_config("ACTION", foreground="dark green")

    # Create text handler
    text_handler = TextHandler(st)
    formatter = logging.Formatter('%(asctime)s    IP: %(IP)-15s PORT: %(PORT)-5s    MESSAGE: %(message)s', datefmt='%Y-%m-%d,%H:%M:%S') #.%(msecs)03d
    text_handler.setFormatter(formatter)

    # Add action level
    logging.addLevelName(ACTION, "ACTION")
    def action(self, message, *args, **kws):
        self._log(ACTION, message, args, **kws) 
    logging.Logger.action = action

    # Create logger
    logger = logging.getLogger()
    logger.addHandler(text_handler)
    logger.setLevel(logging.DEBUG)

    return (root, logger)

1 Ответ

0 голосов
/ 04 февраля 2019

После некоторой прокрутки в интернете я обнаружил, что pydub использует протоколирование, и я, вероятно, перезаписываю регистратор.Чтобы исправить это, я изменил эту строку: logger = logging.getLogger() на logger = logging.getLogger("SOMENAME")

...