1、os.rename图片批量重命名
背景
在对文件下多个图片进行重命名的时候,os.rename(oldname, newname),报错
OSError: [WinError 123] 文件名、目录名或卷标语法不正确。
分析
当我对一张图片进行重命名的时候,os.rename成功,注意要指定具体路径
a = r"C:\Users\yourpath\haoqi-3.jpg"
b = r"C:\Users\yourpath\qiqi-00-00-10.jpg"
os.rename(a,b) # 目录是可以修改的 os.renames(a,b)也可以成功
问题出在图片批量重命名,要修改一下循环的逻辑,不能直接for pic in file:,修改如下
for parent, dirnames, filenames in os.walk(path):
n = len(filenames)
for i in range(n):
filename = filenames[i]
relative_time = "xxxxx"
prefix = filename.split('.')[0] + '-' + relative_time
suffix = filename.split('.')[-1]
new_filename = "{}.{}".format(prefix, suffix)
# 旧名字
src = os.path.join(parent, filename)
# 新名字
dst = os.path.join(parent, new_filename)
os.renames(src, dst)
2、关于os.chird()
是我在解决上一个问题的时候,搜索得到的解决方案,< OSError: [WinError 123] 文件名、目录名或卷标语法不正确。> 虽然我使用这个没有解决问题。。。
newname = "(" + NextAddPart + ")" + items
os.chdir(path + '\\' + NextAddPart) # path = 就是修改后要指定的路径
os.rename(items, newname)
os.chdir(path) 方法是用于改变当前工作路径到指定路径。path 即要切换的新路径。
看原链接的图片就很清晰了
另外,与此文标题无关
这博主实现的内容和我好像,python遍历文件夹下文件 批量重命名
#!/usr/bin/python
# -*- coding:utf8 -*-
import os
import sys
def cur_file_dir():
# 获取当前文件路径
path = sys.path[0]
if os.path.isdir(path):
return path
elif os.path.isfile(path):
return os.path.dirname(path)
def ReName(filpath):
video_list = os.listdir(filpath)
for video_index in range(0, len(video_list)):
full_name = os.path.join(filpath, video_list[video_index])
video_name = video_list[video_index]
if video_name[0].isdigit():
file_extension = video_name.split(".")[-1]
video_name = video_name.split(".")[0]
video_names = video_name.split('-', 1)
digit = video_names[0]
real_name = video_names[1]
rename = real_name + "-" + digit + "." + file_extension
os.rename(full_name, os.path.join(filpath, rename))
if __name__ == '__main__':
filepath = sys.argv[1]
ReName(filepath)