2-14 作业的问题
# 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)
我想问一下这个作业为什么这段代码执行第一次没问题,再执行一次的话文件夹内的内容就变成这样了?
但如果把这里
_format = 'imooc_%s.jpg' % (index+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说明已经修改过一次了。终止循环即可
祝学习愉快~
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星