一篇文章讲透python双层独立循环(--附案例(python如何实现循环存放文件)

看过电视剧《开端》的都知道,处在循环中是多么让人崩溃的事情,循环可以制造问题,但循环同样可以解决问题。现在我们要讲的这个案例就是利用循环来实现的。

案例说明:
有一个excel文档,一列记录的是文件名,另一列记录的是文件中要填充的文件内容。需要读取对应的文件内容,存入对应的表名中。

分析说明:文件结构如图所示

想要实现最后的结果,首先是需要循环读取文件内容,然后是把读取到的内容循环存入文件。要强调的是这里涉及到的循环并不是嵌套循环,而是两轮 独立 的循环。

下面是用pandas实现过程

import pandas as pd
excel_file='/Users/airc/Desktop/TEST.xlsx'
target_path='/Users/airc/Desktop/目标文件夹/'read_excel=pd.read_excel(excel_file,sheet_name='输出文件内容')
print(read_excel)

print结果

错误示范

新手往往会这么去遍历和储存,这么单看好像并没有问题,因为确实’a‘的值就是遍历出来所有文件名,file存储的时候,也并没有报错,但是最后一看结果就炸了。

table_name=read_excel['文件名']
table_content=read_excel['文件内容']
for a in table_name:print(a)
for b in table_content:file=open(target_path+a,'w+')file.write(b)file.close()

最后的整个文件只保存了test5.txt的内容。

这是为什么呢?百思不得解,唯有debug。

错误原因

咱先看一下存储文件时发生了什么,把断点放在file.open这里的时候,可以看到文件内容的循环‘b’在遍历循环的同时,存储文件名的‘a’的结果始终都是test5.txt

而究竟a的结果为什么只有test5.txt的内容呢?咱再看下第一个for 循环最后给a传的值究竟是什么,当把断点放在print(a)的位置,当一个for 循环遍历完毕时看到最后打印出是‘test5.txt’。

这也就说通了,第一个循环遍历结束时,并不是把所有table_name传给了a,而只是把遍历最后的结果传给了a,所以最后也就只有test5.txt储存了。


那么问题的关键就在于,如何解决双层循环中传值的问题。

正确思路

首先取出来的两列serise类型转换成list,方便下一步进行遍历操作。

table_name=read_excel['文件名'].to_list()
table_content=read_excel['文件内容'].to_list()

这是比较关键的一步,进行table_name遍历操作时,同时把table_name的索引取出来,并且需要把遍历出来a的值追加到定义的空列表里,这样name的结果里装的就是所有table_name的值。

name=[]#定义空列表
for index1,a in enumerate(table_name):#enumerate:遍历列表时带上索引,#index1即索引,a即是valuesname.append(a)#把每一次遍历的a的值追加到name列表里

这个时候再debug就会发现 :列表name里装的是所有需要储存的文件名。

经过上一步把所有的文件名进行了列表存储之后,接着咱就到了咱的最终目的,把文件内容存到对应的文件名中

(最终目的)

for index2,b in enumerate(table_content):#同理enumerate:index2即索引,b即是valuesfile=open(target_path+name[index2],'w+')file.write(b)file.close()

此时的name是个列表,此时的index2是table_content的索引,当遍历存储的时候,name的取值是索引对应的文件名。

这是最终想要达到的效果。

总结一下:python在进行双层独立的循环的时候,是先走完第一层循环,遍历的结果是元素的最后一个值,如果第二层循环是接收不到第一层循环所有的值的,只有把第一层循环的值进行列表追加,第二层循环在用的时候再按索引的顺序取值,才能接受到所有第一层循环的值。

如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!

😝有需要的小伙伴,可以V扫描下方二维码免费领取🆓

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/417886.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2.1.4-相关性分析

跳转到根目录:知行合一:投资篇 已完成: 1、投资&技术   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas   1.2 金融数据处理   1.3 金融数据可视化 2、投资方法论   2.1.1 预期年化收益率   2.1.2 一个关于yaxb的…

高级架构师是如何设计一个系统的?

架构师如何设计系统? 系统拆分 通过DDD领域模型,对服务进行拆分,将一个系统拆分为多个子系统,做成SpringCloud的微服务。微服务设计时要尽可能做到少扇出,多扇入,根据服务器的承载,进行客户端负…

sqli-labs关卡25(基于get提交的过滤and和or的联合注入)

文章目录 前言一、回顾上一关知识点二、靶场第二十五关通关思路1、判断注入点2、爆字段个数3、爆显位位置4、爆数据库名5、爆数据库表名6、爆数据库列名7、爆数据库数据 总结 前言 此文章只用于学习和反思巩固sql注入知识,禁止用于做非法攻击。注意靶场是可以练习的…

无忧秘书智脑:轻松驾驭“看图说话”功能,职场沟通更高效

在现代职场中,有效的沟通是提升工作效率的关键。然而,有时候我们面对一张图片或图表,却难以用言语准确表达其中的信息。这时,无忧秘书智脑的“看图说话”功能就派上了用场。这篇文章将手把手教你如何使用这一功能,以及…

【论文笔记】A Survey on 3D Gaussian Splatting

原文链接:https://arxiv.org/abs/2401.03890 1. 引言 NeRF在计算效率和可控性上具有局限性,这导致了3D高斯溅射(3D GS)的出现,重新定义了场景表达和渲染。 3D GS通过引入新的场景表达技术,用大量的3D高斯…

【Java】后端开发语言Java和C#,两者对比注解和属性的区别以及作用

欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《Java》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握…

HBase学习五:运维排障

1、负载均衡 1.1 Rgion迁移 在当前的HBase版本中,Region迁移虽然是一个轻量级操作,但实现逻辑依然比较复杂,≈复杂性主要表现在两个方面:其一,Region迁移过程涉及多种状态的改变;其二,迁移过程中涉及Master、ZooKeeper(ZK)以及RegionServer等多个组件的相互协调。 …

字符和ASCII编码

文章目录 一、什么是字符二、什么是ASCII编码三,怎么打印字符对应的ASCII值 提示:以下是本篇文章正文内容,下面案例可供参考 一、什么是字符 日常代码中敲写代码中,在键盘上可以敲出各种字符,如a,q&#x…

java8用新特性stream做递归处理

在平时的业务中,避免不了使用递归,比如菜单列表,区域列表等,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理。 下来…

2024年【G2电站锅炉司炉】考试报名及G2电站锅炉司炉复审考试

题库来源:安全生产模拟考试一点通公众号小程序 G2电站锅炉司炉考试报名是安全生产模拟考试一点通生成的,G2电站锅炉司炉证模拟考试题库是根据G2电站锅炉司炉最新版教材汇编出G2电站锅炉司炉仿真模拟考试。2024年【G2电站锅炉司炉】考试报名及G2电站锅炉…

LeetCode 144. 94. 145. 二叉树的前序,中序,后续遍历(详解) ੭ ᐕ)੭*⁾⁾

目录 144.二叉树的前序遍历 一. TreeSize函数的实现: 二. preOrderTree函数的实现: 三.preorderTraversal函数的实现: 最后完整代码: 94.二叉树的中序遍历: 145.二叉树的后续遍历: 经过前面的二叉树的学习&…

Spring第七天(AOP)

简介 AOP(Aspect Oriented Programing)面向切面编程,一种编程范式,指导开发者如何组织程序结构 作用 在不惊动原始设计的基础上为其进行功能增强 Spring理念:无入侵式/无侵入式 基本概念 连接点(JoinPoint) : 程序执行过程中的任意位置&a…