我试图更改* .db文件的名称,所以我将文件路径存储在变量中,然后使用用户使用GUI给出的名称来更改文件的名称。但是,当我尝试使用os.rename()方法重命名文件时,出现了错误。
起初,我在“用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并将其保存在其他变量中。我不明白为什么这种假象还在继续。