os.rename 无法创建已存在的文件
os.rename cannot create a file that already exists
现在我正在尝试重命名包含 txt 文件的文件夹的内容 python:
原始文件命名从0.txt开始到100.txt
并且我想将他们的名称更改为从 10 而不是 0 开始(例如文件将从 10.txt 到 110.txt)
我有 2 个列表,一个包含原始名称路径,另一个包含新名称路径,我正在尝试使用 os.rename() 或 shutil.move() 重命名文件.
但是,当我尝试使用 os.rename() 时,出现无法创建已存在文件的错误。
当我尝试使用 shutil.move() 时,它会删除每个重复的文件夹,只给我最后 9 个文件夹(101 到 110)。
有办法解决这个问题吗??
我建议移动文件并在临时目录中重命名它们,删除原始文件并将文件从临时目录中移回。然后您可以选择删除您创建的临时目录。
听起来您需要从列表的末尾开始。尝试先移动 100->110,然后移动 99->109,依此类推。如果您从列表的开头开始尝试移动 1->11,则 11 已经存在。
编辑:实际上我会推荐上面 Tarranoth 的回答
使用os.replace()
替换一个已经存在的文件。要检查文件是否存在,请使用 os.path.isfile('file path')
您准确地定义了问题。例如,当您处理 02.txt 时,您将其重命名为 12.txt。十次迭代后,您将 同一个文件 重命名为 22.txt,然后 23.txt,...直到完成 102.txt。您对前十个文件执行此操作,系统地清除其他 90 个文件。
您必须从名字的末尾 space 开始,那里有扩展空间。从 100.txt 向下 工作。将 100.txt 重命名为 110.txt,然后将 99.txt 重命名为 109.txt,以此类推。这样,您的移动总是有 10 个未使用的文件名间隔。
编码留作 reader 的练习。 :-)
尝试反转列表(使用原始名称和新名称):
listOrig = ["0.txt", "1.txt", ..., "100.txt"]
listNew = ["10.txt", "11.txt", ..., "110.txt"]
# Reverse the lists
listOrig = listOrig.reverse() # ["100.txt" ... "0.txt"]
listNew = listNew.reverse() # ["110.txt" ... "10.txt"]
现在我正在尝试重命名包含 txt 文件的文件夹的内容 python:
原始文件命名从0.txt开始到100.txt
并且我想将他们的名称更改为从 10 而不是 0 开始(例如文件将从 10.txt 到 110.txt)
我有 2 个列表,一个包含原始名称路径,另一个包含新名称路径,我正在尝试使用 os.rename() 或 shutil.move() 重命名文件.
但是,当我尝试使用 os.rename() 时,出现无法创建已存在文件的错误。
当我尝试使用 shutil.move() 时,它会删除每个重复的文件夹,只给我最后 9 个文件夹(101 到 110)。
有办法解决这个问题吗??
我建议移动文件并在临时目录中重命名它们,删除原始文件并将文件从临时目录中移回。然后您可以选择删除您创建的临时目录。
听起来您需要从列表的末尾开始。尝试先移动 100->110,然后移动 99->109,依此类推。如果您从列表的开头开始尝试移动 1->11,则 11 已经存在。
编辑:实际上我会推荐上面 Tarranoth 的回答
使用os.replace()
替换一个已经存在的文件。要检查文件是否存在,请使用 os.path.isfile('file path')
您准确地定义了问题。例如,当您处理 02.txt 时,您将其重命名为 12.txt。十次迭代后,您将 同一个文件 重命名为 22.txt,然后 23.txt,...直到完成 102.txt。您对前十个文件执行此操作,系统地清除其他 90 个文件。
您必须从名字的末尾 space 开始,那里有扩展空间。从 100.txt 向下 工作。将 100.txt 重命名为 110.txt,然后将 99.txt 重命名为 109.txt,以此类推。这样,您的移动总是有 10 个未使用的文件名间隔。
编码留作 reader 的练习。 :-)
尝试反转列表(使用原始名称和新名称):
listOrig = ["0.txt", "1.txt", ..., "100.txt"]
listNew = ["10.txt", "11.txt", ..., "110.txt"]
# Reverse the lists
listOrig = listOrig.reverse() # ["100.txt" ... "0.txt"]
listNew = listNew.reverse() # ["110.txt" ... "10.txt"]