Не удается сохранить следующий файл переименования (Python) - PullRequest
0 голосов
/ 25 октября 2019

Я сделал небольшое приложение tkinter с python 3.7.3 .py файлами (Windows 10).

Теперь я хочу скопировать один и тот же mdb временный файл (temp) с другим именем в другую папку много раз. Моя программа может копировать и переименовывать временный файл в первый раз, но во второй раз этот файл не может быть скопирован.

Показывает:

FileExistsError: [WinError 183] Cannot create a file when that file already exists:

Я пытаюсь добавить

 if os.path.isfile(dsc): 

перед

 shutil.copy(src, dst) 

, чтобыперезаписать файл, но он все равно не работает. Покажите ту же ошибку.

from tkinter import *
from tkinter.ttk import *


class View(Frame):
    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.winfo_toplevel().title("Save File")
        self.grid()
        self.init_view()

    def init_view(self):
        self.inputText = Label(self)
        self.inputText["text"] = "Input Serial ID"
        self.inputText.grid(row=0, column=0, sticky=N + E)
        self.inputField = Entry(self)
        self.inputField["width"] = 20
        self.inputField.grid(row=0, column=1, sticky=N + W)

        self.save = Button(self)
        self.save["text"] = "Save"
        self.save.grid(row=1, column=1, sticky=N + W)

        self.displayText = Label(self)
        self.displayText["text"] = "Status:Idle"
        self.displayText.grid(row=3, column=0, columnspan=7, sticky=N)


if __name__ == '__main__':
    root = Tk()
    app = View(master=root)
    root.mainloop()
import os
import shutil
from os import path
from Save_Server_View import View
from tkinter import Tk


# Controller
class Controller:
    def __init__(self):
        self.app = View(master=Tk())
        self.app.save["command"] = self.save_method
        self.app.mainloop()

    # Copy & Rename File
    def save_method(self):
        if os.path.exists("Abs Path(HIDE FOR PRIVATE)"):
            src = path.realpath("Abs Path(HIDE FOR PRIVATE)")
            dir = os.path.dirname(os.path.realpath('__file__'))
            dst = os.path.join(dir, "..\\test data\\")
            message = 'source={} => destination={}'.format(src, dst)
            self.app.displayText["text"] = message
            shutil.copy(src, dst)
            for dst_filename in os.listdir(dst):
                new_dst_filename = self.app.inputField.get() + '.mdb'
                os.rename(os.path.join(dst, dst_filename), os.path.join(dst, new_dst_filename))
        else:
            message = "File didn't exist"
            self.app.displayText["text"] = message


# Execute
if __name__ == '__main__':
    app = Controller()

Я, кроме того, много раз копирую один и тот же временный файл с разными именами в другую папку, но только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...