鱼C论坛

 找回密码
 立即注册
查看: 1667|回复: 1

[已解决]python程序报错,请进来看看,谢谢

[复制链接]
发表于 2022-3-4 09:52:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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: [WinError 87] The parameter is incorrect

按照提示添加了close()还是没解决问题,大家可以在自己程序上跑下,这是链接:
https://stackoverflow.com/questi ... oop-self-pipe-error
最佳答案
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()
360截图20220304095136995.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 06:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表