如何在程序重新运行/Python期间停止重写日志数据

How stop re-writing log data during program re-run / Python

我遇到了日志记录问题。每次我重新 运行 我的程序时,它都会覆盖文件中的日志数据,因为我也需要存储以前的数据。我在有文件时创建了 if 语句,它没有像我想的那样创建一个新文件,但它没有解决我的问题。也许有人知道这个问题?提前致谢!

from tkinter import *
from tkinter import filedialog
import easygui
import shutil
import os
from tkinter import filedialog
from tkinter import messagebox as mb
from pathlib import Path
import logging
from datetime import date


def open_window():
    read=easygui.fileopenbox()
    return read

#logging config

if Path('app.log').is_file():
    print ("File exist")
else:
    logging.basicConfig(filename='app.log', filemode="w", format='%(name)s - %(levelname)s - %(message)s ')
    print ("File doesn't exist and will be created")


LOG_for="%(asctime)s, log content: %(message)s"

logger=logging.getLogger()
logger.setLevel(logging.DEBUG)


# Function for opening the
# file explorer window
def browseFiles():
    filename = filedialog.askopenfilename(initialdir = "/",
                                          title = "Select a File",
                                          filetypes = (("Text files",
                                                        "*.txt*"),
                                                       ("all files",
                                                        "*.*")))
      
    # Change label contents
    label_file_explorer.configure(text="File Opened: "+filename)
      
# move file function
def move_file():
    source = open_window()
    filename = os.path.basename(source)
    destination =filedialog.askdirectory()
    dest = os.path.join(destination,filename)
    if(source==dest):
        mb.showinfo('confirmation', "Source and destination are same, therefore file will be moved to Home catalog")
        newdestination = Path("/home/adminas")
        shutil.move(source, newdestination)
        logging.shutdown()
        #current_time()
        logging.basicConfig(filename='app.log', filemode="w", format=LOG_for) 
        logging.info('File was moved to' + newdestination)
        
    else:
        shutil.move(source, destination)  
        mb.showinfo('confirmation', "File Moved !")
        #current_time()
        logging.basicConfig(filename='app.log', filemode="w", format=LOG_for)
        logging.info('File was moved to' + destination) 
                                                                                                  
# Create the root window
window = Tk()
  
# Set window title
window.title('File Explorer')
  
# Set window size
window.geometry("400x400")
  
#Set window background color
window.config(background = "white")
  
# Create a File Explorer label
label_file_explorer = Label(window,
                            text = "File Explorer using Tkinter",
                            width = 50, height = 4,
                            fg = "blue")
  
      
button_explore = Button(window,
                        text = "Browse Files",
                        command = browseFiles)

button_move = Button(window,
                        text = "Move File",
                        command = move_file)     
  
button_exit = Button(window,
                     text = "Exit",
                     command = exit)
  
# Grid method is chosen for placing
# the widgets at respective positions
# in a table like structure by
# specifying rows and columns
label_file_explorer.grid(column = 1, row = 1)

button_move.grid(column = 1, row = 2)
  
button_exit.grid(column = 1,row = 3)
  
# Let the window wait for any events
logging.shutdown()
window.mainloop()

但在 shell 中它打印正确,但每次 运行ning 程序一遍又一遍地覆盖作为示例新数据,在重新 运行 之后消失并被新的取代:

2021-05-02 11:04:15,384, log level: INFO, log content: File was moved to/home/adminas/Documents

不太明白你的问题。但是,如果您不想覆盖日志文件,请将 filemode 更改为 'a',这会将新日志附加到您的日志文件。