运行功能更改名称时如何修复正在删除的文件

时间:2019-06-04 14:56:51

标签: python python-3.x

import glob, os
def rename_files(string):
   os.chdir("files")
   num = 1
   for file in glob.glob('*'):
      os.rename(file, '{0}_{1}'.format(string, num))
      print(num)
      num = num + 1
   print("Renaming Successful...")
rename_files("TextFile")

如果我有一个目录,当我调用此函数时,该目录包含10个名为foo1-foo10的文件,我希望将文件重命名为TextFile1-TextFile10。

通常,这将起作用,但是如果我再次运行该程序,它将删除一些文件。如果我将新文件添加到目录中,然后运行程序,则会删除更多文件。

我不知道是什么原因导致了这个问题,非常感谢您提供一些帮助来解决这个问题。例如:

起始目录: foo1,foo2,foo3,foo4,foo5,foo6,foo7,foo8,foo9,foo10

第一次通过该函数后的目录: TextFile_1 ... TextFile_10

第二次通过函数后的目录: TextFile_3,TextFile_4,TextFile_5,TextFile_7,TextFile_9,TextFile_10

如果我通过我再运行它一次,它将从TextFile_1 ... TextFile_6中订购目录

为什么会这样?

1 个答案:

答案 0 :(得分:2)

文件不会被删除,但会被覆盖。

如果从两个文件file1file2开始,然后重命名file1-> file2,那么最终只会得到一个文件(名为{{1} },但包含前file2的数据。

正确的逻辑是检查目标名称是否已被使用,例如:

file1

仍然存在一个小问题,即所谓的比赛条件。但是只有两个程序同时重命名同一目录中的文件时,这才重要。