到目前为止,我尝试使用pystun,但遵循手册:
import stun
nat_type, external_ip, external_port = stun.get_ip_info()
产量:
>>> import stun
>>> nat_type, external_ip, external_port = stun.get_ip_info()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.6/dist-packages/stun/__init__.py", line 253, in get_ip_info
stun_host=stun_host, stun_port=stun_port)
File "/usr/local/lib/python3.6/dist-packages/stun/__init__.py", line 186, in get_nat_type
_initialize()
File "/usr/local/lib/python3.6/dist-packages/stun/__init__.py", line 93, in _initialize
dictValToAttr.update({items[i][1]: items[i][0]})
TypeError: 'dict_items' object does not support indexing
看来该存储库已不再维护。我发现ipgetter可以快速获取IP地址,不幸的是它不提供NAT类型信息。
有效检索两者的替代方法是什么?
参考方案
python
版本,使用pystun
和您使用2.x
的3.x
原始代码可能是一个问题。
查看source code line where error originates,我们可以看到它调用了字典.items()
方法并尝试按位置访问其成员。
这是问题所在:
在python 2.x
中,dict.items()
返回一个元组列表。
在python 3.x
中,dict.items()
返回一个view,该位置不能被位置访问,只能被迭代。
简短的答案:您不能将pystun
仓库与python 3.x
一起使用;也许可以做一些修补,或者您可以自己复制和修改源代码,而不必依赖外部存储库。
在Python中,我正在使用uuid4()方法创建唯一的字符集。但是我找不到将其限制为10或8个字符的方法。有什么办法吗?uuid4()ffc69c1b-9d87-4c19-8dac-c09ca857e3fc谢谢。 参考方案 尝试:x = uuid4() str(x)[:8] 输出:"ffc69c1b" Is there a way to…
Python:检查是否存在维基百科文章 - python我试图弄清楚如何检查Wikipedia文章是否存在。例如,https://en.wikipedia.org/wiki/Food 存在,但是https://en.wikipedia.org/wiki/Fod 不会,页面只是说:“维基百科没有此名称的文章。”谢谢! 参考方案 >>> import urllib >>> prin…
Python GPU资源利用 - python我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…
Python:图像处理可产生皱纹纸效果 - python也许很难描述我的问题。我正在寻找Python中的算法,以在带有某些文本的白色图像上创建皱纹纸效果。我的第一个尝试是在带有文字的图像上添加一些真实的皱纹纸图像(具有透明度)。看起来不错,但副作用是文本没有真正起皱。所以我正在寻找更好的解决方案,有什么想法吗?谢谢 参考方案 除了使用透明性之外,假设您有两张相同尺寸的图像,一张在皱纹纸上明亮,一张在白色背景上有深…
Python:如何从字节中提取特定位? - python我有一条消息,显示为14 09 00 79 3d 00 23 27。我可以通过调用message[4]从此消息中提取每个字节,例如,这将给我3d。如何从该字节中提取单个8位?例如,如何将24-27位作为单个消息?只需28位? 参考方案 要回答问题的第二部分,您可以使用按位运算来获取特定的位值# getting your message as int i = …