praid 发表于 2022-3-4 09:52:09

python程序报错,请进来看看,谢谢

import pyshark
import asyncio

pcap_file = 'c:/sip.cap'

capture = pyshark.FileCapture(pcap_file,display_filter='sip contains factory')
for packet in capture:
    try:
      if hasattr(packet, 'sip'):
            field_names = packet.sip._all_fields
            field_values = packet.sip._all_fields.values()
            for field_name, field_value in zip(field_names, field_values):
                if field_name == 'sip.msg_hdr':
                  print(str(field_value.split('\\xd\\xa')))
                elif field_name == 'sip.msg_body':
                  print(field_value)
    except OSError:
      pass
    except asyncio.TimeoutError:
      pass
下面是报错信息:
Error on reading from the event loop self pipe
loop: <ProactorEventLoop running=True closed=False debug=False>
Traceback (most recent call last):
File "C:\Users\rkaura\AppData\Local\Programs\Python\Python38-32\lib\asyncio\proactor_events.py", line 777, in _loop_self_reading
    f = self._proactor.recv(self._ssock, 4096)
File "C:\Users\rkaura\AppData\Local\Programs\Python\Python38-32\lib\asyncio\windows_events.py", line 445, in recv
    self._register_with_iocp(conn)
File "C:\Users\rkaura\AppData\Local\Programs\Python\Python38-32\lib\asyncio\windows_events.py", line 718, in _register_with_iocp
    _overlapped.CreateIoCompletionPort(obj.fileno(), self._iocp, 0, 0)
OSError: The parameter is incorrect

按照提示添加了close()还是没解决问题,大家可以在自己程序上跑下,这是链接:
https://stackoverflow.com/questions/68077720/getting-error-on-reading-from-the-event-loop-self-pipe-error

isdkz 发表于 2022-3-4 10:13:34

本帖最后由 isdkz 于 2022-3-4 11:13 编辑

import pyshark
import asyncio

pcap_file = 'C:/sip.cap'

capture = pyshark.FileCapture(pcap_file,display_filter='sip contains factory')
for packet in capture:
    try:
      if hasattr(packet, 'sip'):
            field_names = packet.sip._all_fields
            field_values = packet.sip._all_fields.values()
            for field_name, field_value in zip(field_names, field_values):
                if field_name == 'sip.msg_hdr':
                  print(str(field_value.split('\\xd\\xa')))
                elif field_name == 'sip.msg_body':
                  print(field_value)
    except OSError:
      pass
    except asyncio.TimeoutError:
      pass
capture.close()      # 在这里加上 capture.close()
页: [1]
查看完整版本: python程序报错,请进来看看,谢谢