gpt4 book ai didi

Python: ipaddress AttributeError: 'str' 对象没有属性

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:41 24 4
gpt4 key购买 nike

按照给出的建议 here ,我正在使用检查 ipaddress 模块来执行类型检查:

In [25]: IPv4Address(u'100.64.1.1') in IPv4Network(u'100.64.0.0/10')
Out[25]: True

在 IPython 中运行良好。然而当我把它变成一个函数时:

import ipaddress
def isPrivateIp(ip):
ip4addressBlocks = [u'0.0.0.0/8', u'10.0.0.0/8', u'100.64.0.0/10', u'127.0.0.0/8', u'169.254.0.0/16', u'172.16.0.0/12', u'192.0.0.0/24', u'192.0.2.0/24', u'192.88.99.0/24',
u'192.168.0.0/16', u'198.18.0.0/15', u'198.51.100.0/24', u'203.0.113.0/24', u'224.0.0.0/4', u'240.0.0.0/4', u'255.255.255.255/32']
unicoded = unicode(ip)
if any(unicoded in ipaddress.IPv4Network(address) for address in ip4addressBlocks):
return True
else:
return False

print isPrivateIp(r'169.254.255.1')

我得到:

  File "isPrivateIP.py", line 14, in <module>
print isPrivateIp(r'169.254.255.1')
File "isPrivateIP.py", line 9, in isPrivateIp
if any(unicoded in ipaddress.IPv4Network(address) for address in ip4addressBlocks):
File "isPrivateIP.py", line 9, in <genexpr>
if any(unicoded in ipaddress.IPv4Network(address) for address in ip4addressBlocks):
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/ipaddress.py", line 705, in __contains__
if self._version != other._version:
AttributeError: 'str' object has no attribute '_version'

为什么会这样?

最佳答案

您检查 unicode 字符串 ip 是否在网络中,而在您使用 IPv4Address 实例之前。

你的测试必须改为

if any(IPv4Address(unicoded) in ipaddress.IPv4Network(address) for address \
in ip4addressBlocks):

关于Python: ipaddress AttributeError: 'str' 对象没有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30996380/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com