Я получаю сообщение об ошибке при попытке изменить имя файла * .db - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь изменить имя файла * .db, поэтому я сохраняю путь к файлу в переменной, затем я изменяю имя файла на имя, которое пользователь дает с помощью графического интерфейса. Но когда я пытаюсь переименовать файл с помощью метода os.rename (), я получаю сообщение об ошибке.

Сначала у меня были эти пробы в выражении "whith open ( путь к файлу ) как f:", но когда я понял, что открытый файл - это файл, который я пытался изменить, я получил его из. Я также попытался сделать копию исходного каталога, а затем использовать эту копию, чтобы объявить новый путь к файлу (даже зная, что это изменение адреса id).

Несмотря на все мои усилия, я все еще получаю ошибку: [WinError 32] Процесс не может получить доступ к файлу, потому что он используется другим процессом: 'C: \ Users \ Aitor Cantero Crespo \ Desktop \ GUI_py \ soso.db' -> 'C: \ Users \ Aitor Cantero Crespo \ Desktop \ GUI_py \ sos.db '

Вот код:

def Modificar(NombreDelProyecto, NombreDelCliente, Descripcion, LetraRevision, FechaRevision, LetraFuerza, LetraMedida,     #|
                                            LetraControl, LetraComunicacion, MargenEnOrigen, MargenEnDestino):          #|- Variables de la función
    global Directorio


    Info =  [NombreDelProyecto, NombreDelCliente, Descripcion, LetraRevision, FechaRevision,                            #|
                        LetraFuerza, LetraMedida, LetraControl, LetraComunicacion, MargenEnOrigen, MargenEnDestino]     #|- Datos del proyecto

    Conexion = connect('{}'.format(Directorio))                                                                         # Crea la conexión con la base de datos


    with Conexion:                                                                                                      # Para trabajar con la base de datos

        Seleccion = Conexion.cursor()
        Seleccion.execute("""SELECT NombreDelProyecto FROM InfProy""")
        Nombre = Seleccion.fetchone()[0]

        Seleccion.execute("""UPDATE InfProy SET NombreDelCliente='{}', Descripcion='{}', LetraRevision='{}', FechaRevision='{}', 
                        LetraFuerza='{}', LetraMedida='{}', LetraControl='{}', LetraComunicacion='{}', MargenEnOrigen='{}', MargenEnDestino='{}'""".format(
                        Info[1], Info[2], Info[3], Info[4], Info[5], Info[6], Info[7], Info[8], Info[9], Info[10]))

    if Nombre != Info[0]:
        with Conexion:                                                                                                      # Para trabajar con la base de datos
            Seleccion = Conexion.cursor()
            Seleccion.execute("""UPDATE InfProy SET NombreDelProyecto='{}'""".format(Info[0]))

        print(Directorio)
        print(Nombre)
        print(Info[0])

        Directorio_N = Directorio.replace(str(Nombre), str(Info[0]))
        Directorio_N = path.normpath(Directorio_N)
        Directorio = path.normpath(Directorio)

        print(Directorio_N)

        rename(Directorio, Directorio_N)    

Я не ожидал бы никакой ошибки, так как я только изменяю str и сохраняю его в другой переменной. Я не могу понять, почему это продолжается до сих пор.

...