0

ログファイルにpython create filterを使いたいです。最近の 7 日間の記録を取得します。しかし、時間を比較する方法がわからなかったとき。現在の時刻が 11/9/2012 のように、2012 年 4 月 9 日から現在までのレコードを取得したい

のようなログファイル

 Sat Sep  2 03:32:13 2012 [pid 12461] CONNECT: Client "66.249.68.236"
 Sat Sep  2 03:32:13 2012 [pid 12460] [ftp] OK LOGIN: Client "66.249.68.236", anon     password "gxxglxxxxt@google.com"
 Sat Sep  2 03:32:14 2012 [pid 12462] [ftp] OK DOWNLOAD: Client "66.249.68.236",   "/pub/10.5524/100001_101000/100022/readme.txt", 451

私はこれを使っています

  def OnlyRecent(line):
       print time.strptime(line.split("[")[0].strip(),"%a %b %d %H:%M:%S %Y")
       print time.time()
    if  time.strptime(line.split("[")[0].strip(),"%a %b %d %H:%M:%S %Y") < time.time():
        return True
    return False

しかし、それは示しています

   (2012, 9, 2, 3, 32, 13, 5, 246, -1) 
    1347332968.08
   (2012, 9, 2, 3, 32, 13, 5, 246, -1)
    1347332968.08
   (2012, 9, 2, 3, 32, 14, 5, 246, -1)
    1347332968.08

多くの行を選択した後、それらをスクリプトに保存するために新しいファイル(*.txtまたはログ)を作成するにはどうすればよいですか?ファイル名は現在の日付を使用します

ありがとう

4

3 に答える 3

1

time.mktimeを使用して、タイムタプルをUNIXタイムスタンプに変換できます。

>>> import time
>>> time.mktime((2012, 9, 2, 3, 32, 13, 5, 246, -1))
1346527933.0
于 2012-09-11T03:31:55.157 に答える
1

同じデータ構造を使用するには、datetime.datetime.strptimeとdatetime.datetime.now()を使用します。

from datetime import datetime 
def OnlyRecent(line):
  return  datetime.strptime(line.split("[")[0].strip(),"%a %b %d %H:%M:%S %Y") < datetime.now()
于 2012-09-11T03:33:06.370 に答える
1

time使用する代わりdatetimetimedelta

seven_days = datetime.timedelta(days=7)

def OnlyRecent(line):
    dt = datetime.datetime.strptime(line.split('[')[0].strip(), "%a %b %d %H:%M:%S %Y")
    return dt > datetime.datetime.now() - seven_days
于 2012-09-11T03:36:17.460 に答える