【问题标题】:How to rename subfolders which contain same name in python如何在python中重命名包含相同名称的子文件夹
【发布时间】:2021-07-15 18:34:05
【问题描述】:

我正在尝试以奇数顺序 (1,3,5,...) 重命名从 61440122800 的子文件夹,但是当达到相同的旧名称时出现错误:

 WinError 183] Cannot create a file when that file already exists:
'Input_Intact/77120' -> 'Input_Intact/77121'

你可以看到下面的代码:

import os

for dirname in os.listdir("."):
       if os.path.isdir(dirname):
        for i, filename in enumerate(os.listdir(dirname)):
            j=i+1
            os.rename(dirname + "/" + filename, dirname + "/" + str(i+j))

【问题讨论】:

  • 请注意,os.listdir() 确实以任何特定顺序返回目录条目。也就是说,您不应该假设它们已排序。

标签: python for-loop operating-system rename


【解决方案1】:

像这样对文件进行大规模重命名时,可能会发生文件的新名称与另一个文件的旧名称相同的情况。这将导致您看到的错误消息(“文件已存在”)。

基本上有两种方法可以解决这个问题。首先是分两步重命名文件:首先,给所有文件一个临时名称(例如附加.tmp),这样就不会与现有文件发生冲突。然后,执行第二次重命名文件以删除该后缀。

第二种方法是创建一个临时子目录并在重命名时将文件移动到那里。完成后,将文件移回原始目录并删除临时子目录。

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 2014-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2021-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多