【发布时间】:2019-11-28 18:01:26
【问题描述】:
我正在尝试设置一个脚本来查看包含 IP 地址和日期等内容的单个文件。我想提取所有超过 365 天的数据并有一个文本文件可供查看。我不断遇到语法错误等问题。
我尝试过改变
day = eval(line) to day = str(line) but I get
TypeError: can't compare datetime.date to str
#!/bin/env python
from datetime import timedelta
import datetime
limit = datetime.datetime.now() + timedelta(days=365)
with open('filename') as ifile:
for line in ifile:
day = eval(line)
if day > limit:
break
formatted_dates = [(item[0], item[1].strptime("%d/%m/%y"), item[2]) for item in sorted_dates]
for date in formatted_dates:
print ('{}: {}'.format(date))
我想要一个新文件,内容如下:
128.xxx.xxx.xx [%d %m %y] 从最旧到最新。
我不断得到:
File "./scrpitpyth.py", line 9, in <module>
day = eval(line)
File "<string>", line 1
128.xxx.xxx.xx - - [02/Feb/2016:15:00:26 -0700]
SyntaxError: invalid syntax
我试图解析的数据如下:
128.xxx.xxx.xxx - - [20/Mar/2017:09:54:03 -0600] "POST /work/labor/HTTP/1.1"
128.xxx.xxx.xxx - - [23/Mar/2017:09:54:03 -0600] "GET /work/ HTTP/1.1" 200
128.xxx.xxx.xxx - - [24/Mar/2017:09:56:02 -0600] "GET /work/view/laborcats
【问题讨论】:
-
正如下面的答案中提到的
eval()是问题所在,但为了提供建议,您能否提供一些您尝试解析的示例文本文件? -
刚刚添加它们
-
怎么强调都不为过:永远不要使用
eval()。尤其是在不受信任的输入上。
标签: python file datetime syntax-error