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中订购目录
为什么会这样?
答案 0 :(得分:2)
文件不会被删除,但会被覆盖。
如果从两个文件file1
和file2
开始,然后重命名file1
-> file2
,那么最终只会得到一个文件(名为{{1} },但包含前file2
的数据。
正确的逻辑是检查目标名称是否已被使用,例如:
file1
仍然存在一个小问题,即所谓的比赛条件。但是只有两个程序同时重命名同一目录中的文件时,这才重要。