【发布时间】:2013-06-04 16:54:27
【问题描述】:
我正在使用 python 分析一个 Apache 访问日志文件,我想从中提取 Referrer 字段。 Referrer 位于第 9 个位置,使用空格作为分隔符。 (用空格分割后总共有9个以上的字段。)以下代码将提取的字段写入文件。
for line in open('log'):
referer = line.split(' ')[9]
fo.write(referer +'\n')
这里的问题是referrer字段被写入文件,但程序给出以下错误?可能是什么问题?
Traceback (most recent call last):
File "temp.py", line 18, in <module>
referer = line.split(' ')[9]
IndexError: list index out of range
示例日志文件行:
112.135.128.20 - [13/May/2013:23:55:04 +0530] "GET /SVRClientWeb/ActionController HTTP/1.1" 302 2 "https://www.example.com/sample" "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329" GET /SVRClientWeb/ActionController - HTTP/1.1 www.test.com
【问题讨论】:
-
这意味着并非所有的行看起来都一样。可能有几行比这一行短。
-
可能其中一行被缩短了,这会破坏你的脚本。
-
包含一个 try/except 代码,打印出引发异常的行,以便您可以验证该行是否不遵循模式
-
@jabaldonedo 谢谢,成功了!