不理解为何只会改到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)
上图为运行后效果。
这段代码为何可以实现只对jpg文件改名而不动到其他类型文件,这一点我不太理解。
1回答
同学,你好!因为传入要修改的路径就是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,如绿框

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

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

所以只是对images 文件夹进行操作,只修改了.jpg文件
祝学习愉快~
相似问题
回答 1