私はプログラムを実行するたびに別のファイルにデータを書き込むプログラムを書いた。これは初めてのことですが、プログラムをやり直すと、2つのエントリが作成され、3つ目は4つのエントリが作成されます。私は間違いを見つけられません。ログファイルがあまりにも多くのエントリを作成するが、なぜわからない
これは新しいファイルにエントリを作成しなければならないコードの一部です:
import datetime
import logging
logging.basicConfig(filename='loghistory.log', filemode='w', level=logging.DEBUG)
logger = logging.getLogger('loghistory.log')
ch = logging.FileHandler('loghistory.log',mode='w')
# to empty exisiting file: logging.FileHandler('loghistory.log', mode ='w')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s',datefmt='%m/%d/%Y %I:%M:%S %p')
ch.setFormatter(formatter)
logger.addHandler(ch)
logger.setLevel(logging.DEBUG)
if q2==0 and q1==0:
logger.debug('No airplanes within 5 km')
else:
if q2 ==0 and q1>0:
logger.debug('At least 1 airplane within 5 km')
else:
if q2>0:
logger.debug('At least 1 airplane within 2 km')
これは、それが現在のようになります。
03/07/2017 09:06:21 AM - loghistory.log - DEBUG - At least 1 airplane within 2 km
03/07/2017 09:06:21 AM - DEBUG:loghistory.log:At least 1 airplane within 2 km
03/07/2017 09:06:21 AM - loghistory.log - DEBUG - At least 1 airplane within 2 km
が、それは次のようになります。
03/07/2017 09:06:21 AM - At least 1 airplane within 2 km
03/07/2017 09:06:22 AM - At least 1 airplane within 2 km
03/07/2017 09:06:23 AM - At least 1 airplane within 2 km
毎秒1つの新しいエントリ(または2秒)。
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
import pandas as pd
import math
import numpy as np
import winsound
from Tkinter import *
#----------------------------------------------------------------------------------
# import and reduce data and change it to distances
data = np.genfromtxt("c:/kenny/daten/daten1s55.py",dtype = np.str,delimiter=",")
x=data
y11=[]
z=[]
w1=[]
w2=[]
w3=[]
i=0
for i in range(len(x)):
if (len(x[i][14]) > 0):
y11.append((math.acos(math.sin(math.radians(float(x[i][14])))*math.sin(math.radians(54.102427))+math.cos(math.radians(54.102427))*math.cos(math.radians(float(x[i][14])))*math.cos(math.radians(11.735042-float(x[i][15])))))*6378.388)
z.append(x[i][4])
w1.append(x[i][14])
w2.append(x[i][15])
w3.append(x[i][11])
v=np.column_stack((z,y11,w1,w2,w3))
M = pd.DataFrame(v)
"""M.columns=['Flightcode','Distance','Lat','Long','Height']"""
M[1] = M[1].astype(float)
M1=M.sort([0,1])
M2=M1.reset_index(drop=True)
v1=[]
v2=[]
v3=[]
v4=[]
v5=[]
ii=0
v1.append(M2[0][0])
v2.append(M2[1][0])
v3.append(M2[2][0])
v4.append(M2[3][0])
v5.append(M2[4][0])
for ii in range(len(z)):
if M2[0][ii] <> v1[-1]:
v1.append(M2[0][ii])
v2.append(M2[1][ii])
v3.append(M2[2][ii])
v4.append(M2[3][ii])
v5.append(M2[4][ii])
Data_gekuertzt1=np.column_stack((v1,v2,v3,v4,v5))
Data_gekuertzt= pd.DataFrame(Data_gekuertzt1)
#----------------------------------------------------------------------------------
# alert when airplane closer than 2 or 5 km
q1=0
q2=3
for k in range(len(Data_gekuertzt)):
if v2[k] <=5 and v2[k]>2:
q1+=1
else:
if v2[k]<=2:
q2+=1
if q2 > 0:
winsound.Beep(600,2000)
root = Tk()
root.geometry('{}x{}'.format(520, 300))
w = Label(root, text= 'Airplane within 2 km radius',fg = "red",font = "Helvetica 30 bold italic")
w.pack()
root.mainloop()
if q1 >0:
winsound.Beep(300,2000)
#---------------------------------------------------------------------------------------
#create a logfile
import datetime
import logging
logger = logging.getLogger('loghistory.log')
ch = logging.FileHandler('loghistory.log')
# to empty exisiting file: logging.FileHandler('loghistory.log', mode ='w')
formatter = logging.Formatter('%(asctime)s - %(message)s',datefmt='%m/%d/%Y %I:%M:%S %p')
ch.setFormatter(formatter)
logger.addHandler(ch)
logger.setLevel(logging.DEBUG)
if q2==0 and q1==0:
logger.debug('No airplanes within 5 km')
else:
if q2 ==0 and q1>0:
logger.debug('At least 1 airplane within 5 km')
else:
if q2>0:
logger.debug('At least 1 airplane within 2 km')
これはFileHandlerの動作方法です。ログメッセージをファイルに追加します。あなたはそれが何をすると思いますか?またはむしろ何を達成したいですか? – nir0s
@ nir0s私は私の質問を編集しました。私が達成したいのは、プログラムが1秒または2秒ごとにメッセージを記録するということですが、プログラムを何度か実行すると1回だけではなく同じメッセージが複数回追加されます。 – Kenny