因此,我尝试重命名文件,并且一直说“该进程无法访问该文件,因为该文件正在被另一个进程使用。” 但是我知道它没有被其他进程使用,所以我不确定发生了什么。这是我的代码
while self.fileSet.hasMoreFiles():
file = self.fileSet.nextFile()
periodIndex=file.find(".")
extension = file[periodIndex:]
baseName=file[:periodIndex]
self.newFile=open(file, 'w+')
self.backupName = baseName + "_bak" + extension
os.rename(file, baseName + "_bak" + extension)
self.newFile=open(file, 'w+')
self.writeNew()
Run Code Online (Sandbox Code Playgroud)
在尝试调用文件之前,您先打开文件两行os.rename,但是在重命名文件之前未关闭文件,因此您自己的程序仍将其打开。
self.newFile.close()在之前调用os.rename(),您应该避免该错误-或open()更妙的是,鉴于您实际上并未使用打开的文件(并且无论如何在重命名之后立即打开文件),因此根本不要在重命名之前调用。
一些切线说明:
您不应该为变量file命名-如果已经存在,则已经有一个名称file被遮盖了。
您复制了很多代码-例如,您刚刚在self.backupName重命名上方的行上创建了代码,然后重新计算了代码。为什么不只是self.backupName作为第二个参数传递给os.rename()?
您可以使用跳过find呼叫和后续切片os.path.splitext()。
总而言之,您可以将代码压缩为以下形式:
while self.fileSet.hasMoreFiles():
curFile = self.fileSet.nextFile()
baseName, extension = os.path.splitext(curFile)
self.backupName = baseName + "_bak" + extension
os.rename(curFile, self.backupName)
self.newFile = open(curFile, 'w+')
self.writeNew()
Run Code Online (Sandbox Code Playgroud)