python如何把排序好的图(1.jpg,2.jpg...)倒序重命名
比如一个文件夹下有(1.jpg,2.jpg...999.jpg)然后把999.jpg改为1.jpg,从大到小重命名为1.jpg,2.jpg...999.jpg
或者改良下这个代码改为重命名图片时,识别名称按从大到小读取然后排序也可,感谢大佬前来帮助小白。
import os
path=input('请输入文件路径(结尾加上/):')
#获取该目录下所有文件,存入列表中
f=os.listdir(path)
n=0
for i in f:
#设置旧文件名(就是路径+文件名)
oldname=path+f[n]
#设置新文件名
newname=path+str(n+1)+'.jpg'
#用os模块中的rename方法对文件改名
os.rename(oldname,newname)
print(oldname,'======>',newname)
n+=1
思路 : 这个主要是 os.listdir(path) 获取到的图片列表名字是按照字符串的形式进行排序的, 而字符串的排序是按照 sacii 码表对应的整形进行排序的, 所以顺序不怎么整齐, 你可以将图片名字切分出来转换成整形来排序就很好的解决了, 我的示例代码中有切分和排序的方法, 你可以看看
改成f后就变成FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'C:\\Users\\17331\\Downloads\\google downloads\\新建文件夹\\hoshi/1.jpg' -> 'C:\\Users\\17331\\Downloads\\google downloads\\新建文件夹\\hoshi/260.jpg'
import os path = input('请输入文件路径(结尾加上/):') # 获取该目录下所有文件,存入列表中 files = os.listdir(path) files.sort(key=lambda x: int(x[:-4])) # 按文件名升序排序 n = len(files) for i in range(n): oldname = path + files[i] newname = path + 'temp_'+files[n - i - 1] os.rename(oldname, newname) for name in os.listdir(path): os.rename(path+name, path+name.split('temp_')[1])
import os
path=input('请输入文件路径(结尾加上/):')
#获取该目录下所有文件,存入列表中
files = os.listdir(path)
files.sort(key = lambda x: int(x[:-4])) # 按文件名升序排序
n = len(files)
for i in range(n):
#设置旧文件名(就是路径+文件名)
oldname = path + f[i]
#设置新文件名
newname = path + f[n - i - 1]
#用os模块中的rename方法对文件改名
os.rename(oldname,newname)
print(oldname,'======>',newname)
大佬,我试了下NameError: name 'f' is not defined
import os
user_path = input("请输入文件夹路径>>").strip()
num_list = [] # 定义空列表后面用
file_list = os.listdir(user_path) # 获得 jpg 列表(排序方式是字符串的排序,不整齐)
for file_name in file_list:
num = int(file_name.split(".")[0]) # 切分名字和后缀
num_list.append(num) # 将名字转换成整形加入空列表
sort_num = sorted(num_list) # 进行排序(现在是整形升序排序)
nums=999
for i in sort_num:
os.rename(os.path.join(user_path,f"{i}.jpg"),os.path.join(user_path,f"{nums}.jpg"))
nums -= 1
print("修改完成!")