2-14 作业的问题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # coding:utf-8 import os from glob import glob from shutil import move def update_filename(path): result = glob(path) for index, data in enumerate (result): path_split = os.path.split(data) _format = 'imooc_%s.jpg' % (index + 1 ) old_filename = os.path.join(path_split[ 0 ], path_split[ 1 ]) new_filename = os.path.join(path_split[ 0 ], _format) move(old_filename, new_filename) if __name__ = = '__main__' : i_path = os.path.join(os.getcwd(), 'images/*' ) update_filename(i_path) |
我想问一下这个作业为什么这段代码执行第一次没问题,再执行一次的话文件夹内的内容就变成这样了?
但如果把这里
1 | _format = 'imooc_%s.jpg' % (index + 1 ) |
改成
1 | _format = 'imooc_%s.jpg' % index |
多次执行都没问题,这是什么原因?怎么解决?
正在回答
同学,你好!当执行一次程序后,图片名为imooc_1、imooc_2、imooc_3......
当第二次执行程序时:
索引为0时,old_filename为imooc_1.jpg,new_filename为imooc_1.jpg,图片名称没有改变
当索引为1时,old_filename为imooc_10.jpg,new_filename为imooc_2.jpg,将imooc_10.jpg 改名称为imooc_2.jpg
当索引2时,old_filename为imooc_2.jpg,new_filename为imooc_3.jpg,将imooc_2.jpg 改名称为imooc_3.jpg,此时系统改的是最初imooc_10的图片名称,只不过是经历了两次改名,图片的名称变成了imooc_3.jpg
当索引为3时,old_filename为imooc_3.jpg,new_filename为imooc_4.jpg,将imooc_3.jpg 改名称为imooc_4.jpg,此时系统改的还是之前imooc_10.jpg的图片,只不过经过数次次循环是名称变为了imooc_3.jpg
依次循环imooc_4变成imooc_5.jpg,imooc_5.jpg变成imooc_6,直到变成imooc_10.jpg,其实图片还是第二次循环时imooc_10.jpg的图片,中间图片都被覆盖了
解决:同学可以用图片名称判断下,如果图片名称为imooc_1.jpg说明已经修改过一次了。终止循环即可
祝学习愉快~
- 参与学习 人
- 提交作业 16330 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧