python - python程序中试图找出IP的无效语法错误
问题描述
我没有任何编码经验,但想让这个代码片段在这里工作:
import re
import sys
import json
import GeoIP
import urllib
import string
import requests
gi = GeoIP.open("GeoLiteCity.dat",GeoIP.GEOIP STANDARD)
r = requests.get('http://lichess.org/stream', stream=True)
buff = ''
pattern = re.compile(sys.argv[1] + '.{30}')
for content in r.iter content():
if content:
buff = buff + content
if len(buff) > 1000:
result keys = re.findall(pattern, buff)
for el in result keys:
result = string.split(el)
print result[0], result[1], result[2][:-8], gi.record by addr(result[2][:-8])['country name'],
gi.record by addr(result[2][:-8])['region name'], gi.record by addr(result[2][:-8])['city']
buff = buff[-30:]
编译器告诉我第 9 行中的语法无效,其中显示的是 STANDARD。
我在名为 lichess.org 的国际象棋网站上查找了基于游戏 ID 的用户 IP 地址。考虑到这段代码是在 7 年前发布的,并且 lichess 改变了某些事情,我有点期待一些改变是必要的。
我发现这个的线程的 OP 也给出了这个建议:
用法:getip.py owlc08je
其中 getip.py 你的脚本名称,“owlc08je” - 游戏的 ID。如果有人在这个游戏中采取行动,他的 ip、国家和城市会打印到控制台。
但是,它不起作用。
提前致谢
带有下划线和更改的编辑代码:
import re
import sys
import json
import GeoIP
import urllib
import string
import requests
gi = GeoIP.open("GeoLiteCity.dat",GeoIP.GEOIP_STANDARD)
r = requests.get('http://lichess.org/stream', stream=True)
buff = ''
pattern = re.compile(sys.argv[1] + '.{30}')
for content in r.iter_content():
if content:
buff = buff + content
if len(buff) > 1000:
result_keys = re.findall(pattern, buff)
for el in result_keys:
result = string.split(el)
print(result[0], result[1], result[2][:-8], gi.record_by_addr(result[2][:-8])['country name'],
gi.record by addr(result[2][:-8])['region name'], gi.record by addr(result[2][:-8])['city'])
buff = buff[-30:]
解决方案
我认为您在 GEOIP 和 STANDARD 之间缺少下划线。
用这个替换第 9 行应该可以解决问题:
gi = GeoIP.open("GeoLiteCity.dat",GeoIP.GEOIP_STANDARD)
编辑:
如其中一条评论所述,是否还有其他地方省略了下划线;那应该可以解决问题。
推荐阅读
- pyspark - PySpark:根据当前行值计算行数
- android - 使用 Roboelectric 3.8 运行单元测试时出现 NoClassDefFoundError
- javascript - 如何以编程方式提交带有来自 URL 的文件的表单
- c# - C#:ShortDatePattern 给出不正确的结果
- jwt - RxJS 概念帮助:访问和刷新令牌,非同时刷新
- php - 在查询中搜索
- testng - 如何在appium中的多个设备中运行脚本
- javascript - 了解 this 在类方法中的使用
- lua - lua 尝试调用字段'createUDPSocket'(一个零值)
- javascript - JS返回不等待等待