gpt4 book ai didi

python - os.rename删除文件python 3

转载 作者:行者123 更新时间:2023-12-01 02:02:51 26 4
gpt4 key购买 nike

Python新手,我的简单脚本获取给定目录并按顺序重命名所有文件,但是它正在删除文件,但打印显示文件名正在重命名,不确定这里出了什么问题。

此外,它以什么顺序检索这些文件?

import os

path = os.path.abspath("D:\Desktop\gp")
i = 0
for file_name in os.listdir(path):

try:
print (file_name + " - " + str(i))
os.rename(os.path.join(path,file_name), str(i))
except WindowsError:
os.remove(str(i))
os.rename(os.path.join(path,file_name), str(i))

i += 1

print(str(i) + " files.")

编辑

下面是包含工作代码的解决方案,按创建日期检索目录中的所有文件,并为它们分配一个迭代编号,同时保留文件扩展名。

import os

def sorted_dir(folder):
def getctime(name):
path = os.path.join(folder, name)
return os.path.getctime(path)
return sorted(os.listdir(path), key=getctime)

path = os.path.abspath("D:\Path\Here")
i = 0
for file_name in sorted_dir(path):
_, ext = os.path.splitext(file_name)
print (file_name + " - " + str(i)+ext)
os.rename(os.path.join(path,file_name), os.path.join(path, str(i) + ext))
i += 1

print(str(i-1) + " files.")

最佳答案

问题在于您对源使用绝对路径,但对目标使用相对路径。因此文件不会被删除,它们只是被移动到当前工作目录中。

要修复此问题,以便将它们重命名为它们所在的同一目录,您可以在目标上执行与源上相同的操作:

os.rename(os.path.join(path,file_name), os.path.join(path, str(i)))
<小时/>

从评论来看,听起来您可能想保留这些文件的扩展名。为此:

_, ext = os.path.splitext(file_name)
os.rename(os.path.join(path,file_name), os.path.join(path, str(i) + ext))

关于python - os.rename删除文件python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49418799/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com