私はこのログファイルサンプルを持っていますが、これは過去1ヶ月間、3ヶ月間および1年間のエントリをカウントする必要があります。ここでは、ログファイルのほんの一部の数行Pythonは過去30日間のデータを返します
10/14/2015 10:04:25 AM Following file:<open file 'dirs/tmp/bundle_21241.dat.json', mode 'r' at 0x8b73498> has invalid json which is ignored
11/15/2015 10:42:53 PM Following file:<open file 'dirs/tmp/bundle_21241.dat.json', mode 'r' at 0xa314498> has invalid json which is ignored
10/21/2015 10:16:42 AM Following hmac:94e301ff67773de56194165451535ba223cd27588221363290fbfcb96d9d0539 with is already in database so dropping
11/21/2015 10:16:42 AM The data for the duplicate Hmac is : HF 13300100012015-06-15 19:11:47+0000+ 12.61 0.430 1686.00
10/21/2015 10:16:42 AM Following hmac:c35330404902c0b1bb5c6d0718407ea12b25a464433bd1e69152ccc0e0b89c9f with is already in database so dropping
10/17/2015 10:16:42 AM The data for the duplicate Hmac is : HF 13300100012015-06-15 19:30:21+0000+ 12.61 0.010 1686.00
10/11/2015 10:16:42 AM Following hmac:8df71a9f6b6f0a0adb48c052767045f37ec34fce9c002a1c0c5ebc38ed500bf8 with is already in database so dropping
10/15/2015 10:16:42 AM The data for the duplicate Hmac is : HF 13300100012015-06-15 19:45:40+0000+ 12.61 0.018 1686.00
12/21/2015 10:16:42 AM Following hmac:fda9f5756461a8bc2922c55e75a31cf4915e6b0d016ecb786666624a0f04a02f with is already in database so dropping
12/10/2015 10:16:42 AM The data for the duplicate Hmac is : HF 13300100012015-06-15 20:01:01+0000+ 12.60 0.048 1686.00
07/21/2015 10:16:42 AM Following hmac:84d9cdb2145b7c3e0fa2d099070b7bd291c652f30ca25c69240e33ebbd2b8677 with is already in database so dropping
がある。ここに私のコードは、私がプログラミング初心者ですし、うまく日付の計算を理解していない
from datetime import date
from datetime import time
from datetime import datetime
from datetime import timedelta
import os
def fileCount(fileName):
with open(fileName) as FileObj:
Count = 0
today_date = date.today()
One_Year = str(today_date - timedelta(days=365))
One_Month = str(today_date - timedelta(days=30))
Three_Months = str(today_date - timedelta(days=90))
while True:
line = FileObj.readline()
record_date = ('-'.join(line[:10].split('/'))).split(" ")
if not line:
break
if "Following hmac" in line:
try:
convert_date = datetime.strptime(record_date[0], '%m-%d-%Y')
#print "Difference is ", todayDate - convert_date.date()
#print convert_date.date()
date_diff = str(today_date - convert_date.date())
#print dateDiff[:8]
if date_diff[:8] < One_Month:
Count += 1
#print "Last 30 Days Failed HMAC is ", Count
else:
continue
#print convert_date.date()
except ValueError:
print 'This line has a problem:', record_date
print "The Total Number of Failed HMAC is ", Count
# Call The function
def main():
filePath = 'file.txt'
fileCount(filePath)
if __name__ == "__main__":
main()
です。現在のところ、返された回答が得られていますが、正しい値が返されていないようです。目標は、各行をループし、最後の30,60、および365日間隔の行数を計算することです。現在のコードには過去30日間のテストが含まれていますが、間違った値が返されています。
あなたの変数の命名が悪いです。 'OneMonth'は' one_month'という名前でなければなりません。そうでなければクラス名のように見えます。 –
ありがとうございます。私は要求どおりに必要な変更を行った。 – user1895915
時間がある場合は、https://www.python.org/dev/peps/pep-0008/ –