大量重命名文件会删除其中的一些文件

时间:2019-02-01 11:07:45

标签: python-3.x ubuntu standard-library

使用os.rename(src, dest)重命名许多文件时,我的一些文件消失了。

我在Ubuntu上。

In [66]: len(os.listdir())                                                                                                                                                                                         
Out[66]: 1430

In [67]: for i, name in enumerate(os.listdir()): 
    ...:     extension = os.path.splitext(name)[1] 
    ...:     dest = f"{i+1}{extension}" 
    ...:     os.rename(name, dest) 
    ...:                                                                                                                                                                                                           

In [68]: len(os.listdir())                                                                                                                                                                                         
Out[68]: 839

1 个答案:

答案 0 :(得分:1)

According to the FineManual(TM)(强调是我的):

  

os.rename(src,dst,*,src_dir_fd = None,dst_dir_fd = None)

     

将文件或目录src重命名为dst。如果dst是目录,则将引发OSError。 在Unix上,如果dst存在并且是文件,则在用户具有权限的情况下将无提示地替换它

显然,如果您已经有与f"{i+1}{extension}"匹配的文件,它们将被覆盖。