Я пытаюсь изменить имя файла * .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 и сохраняю его в другой переменной. Я не могу понять, почему это продолжается до сих пор.