【Python】os.rename图片批量重命名和os.chdir使用记录

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)

python --os.chdir()方法

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)

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值