python – os.rename()失败,由另一个进程使用

weixin_38048892 2019-09-12 01:29:13
所以我正在尝试重命名一个文件,它一直说“进程无法访问该文件,因为它正被另一个进程使用”.但我知道它没有被其他进程使用,所以我不确定发生了什么.这是我的代码 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()
...全文
993 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38078293 2019-09-12
  • 打赏
  • 举报
回复
在尝试调用os.rename之前打开文件2行,但是在尝试重命名之前不要关闭它,所以你自己的程序仍然打开它. 在os.rename()之前调用self.newFile.close()并且你应该避免那个错误 – 或者更好的是,在重命名之前根本不调用open(),因为你实际上并没有使用打开的文件(无论如何,你在重命名后立即打开它). 一些切线说明: >您不应该命名一个变量文件 – 如果您这样做,那么您已经有了一个名为文件的类型.>您复制了大量代码 – 例如,您刚刚在重命名上方的行上创建了self.backupName,但随后您重新计算了它.为什么不直接将self.backupName作为第二个参数传递给os.rename()?>您可以使用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()

473

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧