不理解为何只会改到jpg文件而不动到其他类型文件

来源:2-14 项目作业

Michael_FCY

2024-02-11 20:55:32

import glob
import shutil


def update_name(path):
    result = glob.glob(path)
    for index, data in enumerate(result):
        if glob.os.path.isdir(data):
            _path = glob.os.path.join(data, '*')
            update_name(_path)
        else:
            path_list = glob.os.path.split(data)
            name = path_list[-1]
            # new_name = '%s_%s.'%(imooc_,index)
            new_name = '%s_%s.jpg' % ('imooc', index + 1)
            new_data = glob.os.path.join(path_list[0], new_name)
            print(new_data)
            shutil.move(data, new_data)


if __name__ == '__main__':
    path = glob.os.path.join(glob.os.getcwd(), 'images')
    update_name(path)

https://img1.sycdn.imooc.com/climg/65c8c32e095b216e02290407.jpg

上图为运行后效果。
这段代码为何可以实现只对jpg文件改名而不动到其他类型文件,这一点我不太理解。

写回答

1回答

好帮手慕小猿

2024-02-15

同学,你好!因为传入要修改的路径就是images 文件夹。22行代码glob.os.getcwd()获取的值是C:\Users\10197\Desktop\IO操作\task\images,如红框。然后使用glob.os.path.join()函数将C:\Users\10197\Desktop\IO操作\task\images 与images 进行拼接,最后的路径是C:\Users\10197\Desktop\IO操作\task\images\images,如绿框

https://img1.sycdn.imooc.com/climg/65cd96b9092bc89010190565.jpg

将路径C:\Users\10197\Desktop\IO操作\task\images\images作为参数传入到update_name函数中进行使用。在函数中使用glob.glob函数获取的路径也是:C:\Users\10197\Desktop\IO操作\task\images\images 

https://img1.sycdn.imooc.com/climg/65cd9822092f71e205400029.jpg

使用for循环对路径进行判断,若是路径则递归函数,不是则修改文件名

https://img1.sycdn.imooc.com/climg/65cd9a36096d45c405760340.jpg

所以只是对images 文件夹进行操作,只修改了.jpg文件

祝学习愉快~

1
hichael_FCY
hp>懂啦,谢谢老师的详细解答!

h024-02-20
共1条回复

Python全能工程师 2024 版

8阶段5大热门领域,从入门到实战,带你从零基础晋级全能,全面提升就业力

1567 学习 · 855 问题

查看课程