Объект ValueError не имеет атрибута _render_traceback_ - PullRequest
0 голосов
/ 05 августа 2020

При использовании dpkt для анализа файла UDP pcap появилось следующее сообщение об ошибке:

with open('file.pcap', 'rb') as fopen:
    pcap = dpkt.pcap.Reader(fopen)
for timestamp, buf in pcap:
    print (timestamp)

ERROR: root: Internal Python error in the inspect module. Ниже приведена обратная трассировка этой внутренней ошибки.

Отслеживание (последний вызов последним): ValueError: чтение закрытого файла

Во время обработки указанного выше исключения произошло другое исключение:

Traceback (последний вызов последним): AttributeError: объект ValueError не имеет атрибута render_traceback '

Во время обработки вышеуказанного исключения произошло другое исключение:

Traceback (последний вызов последним): AssertionError

1 Ответ

2 голосов
/ 05 августа 2020

Файл автоматически закрывается при выходе из блока with open(...) ...:

with open('file.pcap', 'rb') as fopen:
    # still open here
    pcap = dpkt.pcap.Reader(fopen)
    
# automatically closed here
for timestamp, buf in pcap:
    print (timestamp)

Таким образом, вам нужно поместить чтение pcap в тот же блок, где был открыт файл:

with open('file.pcap', 'rb') as fopen:
    pcap = dpkt.pcap.Reader(fopen)
    for timestamp, buf in pcap:
        print (timestamp)
...