Сколько часов работает компьютер для обновления Linux Ubuntu?

Некоторые другие ответы уже указали на модуль traceback .

Обратите внимание, что при использовании print_exc в некоторых угловых случаях вы не получите того, чего ожидаете. В Python 2.x:

import traceback

try:
    raise TypeError("Oups!")
except Exception, err:
    try:
        raise TypeError("Again !?!")
    except:
        pass

    traceback.print_exc()

... будет отображать трассировку последнего исключения :

Traceback (most recent call last):
  File "e.py", line 7, in 
    raise TypeError("Again !?!")
TypeError: Again !?!

Если вам действительно нужно получить доступ к исходному traceback . Одним из решений является кэширование информации об исключении , возвращенной из exc_info , в локальную переменную и отображение ее с помощью print_exception :

import traceback
import sys

try:
    raise TypeError("Oups!")
except Exception, err:
    try:
        exc_info = sys.exc_info()

        # do you usefull stuff here
        # (potentially raising an exception)
        try:
            raise TypeError("Again !?!")
        except:
            pass
        # end of useful stuff


    finally:
        # Display the *original* exception
        traceback.print_exception(*exc_info)
        del exc_info

Производство:

Traceback (most recent call last):
  File "t.py", line 6, in 
    raise TypeError("Oups!")
TypeError: Oups!

Несколько ловушек с этим, хотя:

  • Из документа sys_info :

    Присвоение возвращаемого значения traceback локальной переменной в функции, которая обрабатывает исключение, вызовет циклическую ссылку . Это предотвратит сбор мусора, на который ссылается локальная переменная в той же функции или трассировка. [...] Если вам нужна трассировка, обязательно удалите ее после использования (лучше всего делать с помощью оператора try ... finally)

  • , но из того же документа:

    Начиная с Python 2.2, такие циклы автоматически восстанавливаются , когда сборка мусора включена и становится недоступной, но она остается более эффективной для избегайте создания циклов.


С другой стороны, предоставляя вам доступ к трассировке , связанной с исключением, Python 3 дает менее удивительный результат:

import traceback

try:
    raise TypeError("Oups!")
except Exception as err:
    try:
        raise TypeError("Again !?!")
    except:
        pass

    traceback.print_tb(err.__traceback__)

... будет отображаться:

  File "e3.py", line 4, in 
    raise TypeError("Oups!")

1
задан 14.05.2020, 13:39

1 ответ

Это в три или четыре раза более длинно, чем любая установка Ubuntu или обновление, которое я когда-либо испытывал, и я сделал что-то как 40 или 50 из них.

Ваш Интернет, возможно, понижался? Проверьте свой маршрутизатор. Вы действительно создавали резервную копию всех своих пользовательских файлов перед запуском, правильно? Поскольку это - то, почему Вы никогда не доверяете никакому обновлению или устанавливаете процедуру, это, как предполагается, оставляет Ваши данные нетронутыми. Это все еще, вероятно, там, живое и здорово, но если необходимо запустить, можно закончить тем, что делали установку от DVD или живого USB.

при окончании выполнения переустанавливания необходимо все еще быть в состоянии скопировать пользовательские данные прочь в Карту памяти путем начальной загрузки от диска установки или DVD и выбора "Try out Ubuntu without installing".

0
ответ дан 14.05.2020, 13:40

Теги

Похожие вопросы