【Python零基础入门篇 · 19】:os模块、可迭代对象和迭代器对象

article/2025/10/16 8:09:19

目录

一、os模块

1、os模块中的命令:

2、常用命令的代码演示

 os.getcwd()

os.chdir(path)

os.listdir(path)

 os.mkdir(path)

os.makedirs(path)

os.rename(旧名,新名)

3、举例:查找文件夹下所有满足要求的文件

二、可迭代对象和迭代器对象 

1、可迭代对象(iterable)

2、判断对象是否可以迭代

2、迭代器(iterator) 

3、可迭代对象和迭代器的转换

总结


一、os模块

1、os模块中的命令:

os.getcwd()——获取当前工作目录,即当前程序文件所在的文件夹

os.chdir(path)——改变当前目录,需传递新的路径

os.listdir(path)——返回指定路径下的文件名称列表

os.mkdir(path)——在某个路径下创建文件夹,找不到相应的路径则会报错

os.makedirs(path)——递归创建文件夹,找不到路径时自动创建

os.rmdir(path)——删除文件夹

os.remove(path)——删除文件

os.removedirs(path)——递归删除文件夹,必须都是空目录,如果不是空文件夹将会报错

os.rename(旧名,新名)——文件或文件夹重命名

os.path.split(path)——将文件路径分割成文件夹和文件名,并将其作为二元组返回

os.path.abspath(path)——返回path规范化的绝对路径

os.path.join(path1,path2,……)——将多个路径组合后返回,例如将文件夹和里面的文件组合得到绝对路径

os.path.getsize(path)——返回文件大小,以字节为单位 

os.path.isfile(path)——判断所给的路径是否是一个文件,是则返回True,否则返回False

os.path.isdir(path)——判断所给的路径是否是一个文件夹,是则返回True,否则返回False

2、常用命令的代码演示

  •  os.getcwd()

获取当前工作目录,即当前程序文件所在的文件夹

  • os.chdir(path)

改变当前目录,需传递新的路径

  • os.listdir(path)

返回指定路径下的文件名称列表

例:在F盘下创建一个名为“文件操作”的文件夹,并在文件夹里创建几个工作文件

  •  os.mkdir(path)

在某个路径下创建文件夹,找不到相应的路径则会报错

  • os.makedirs(path)

递归创建文件夹,找不到路径时自动创建

  • os.rename(旧名,新名)

文件或文件夹重命名 

3、举例:查找文件夹下所有满足要求的文件

例如:查找“F:\文件操作"文件夹下所有以xls或xlsx为后缀名的文件

附上代码源码

import os
def travel(path):if os.path.isfile(path): # 判断所给的路径是否是文件,如果是文件则结束代码returnfile_list = os.listdir(path) # 获取文件夹中的所有文件名for cur_file in file_list:temp_path = os.path.join(path, cur_file) # 将文件夹和文件名组合在一起if os.path.isfile(temp_path):if temp_path.endswith("xls") or temp_path.endswith("xlsx"): # 判断文件是否以"xls"、“xlsx”结尾,是则输出,不是则进行下一循环print(temp_path)continueif os.path.isdir(temp_path): # 判断路径是否是一个文件夹,是则递归调用travel(temp_path)travel('F:/文件操作')


二、可迭代对象和迭代器对象 

1、可迭代对象(iterable)

 可通过for...in...这类语句遍历读取数据的对象称之为可迭代对象

可迭代对象:字符串、列表、元组、字典、集合

 满足以下条件的对象可以成为可迭代对象

  • 对象实现了__iter__方法             
  • __iter__方法返回迭代器对象

for循环的工作原理

  • 在内部对可迭代对象调用__iter__方法,获取到迭代器对象
  • 再一次次的通过迭代器对象调用__next__方法获取迭代结果

2、判断对象是否可以迭代

导入的模块:from collections.abc import Iterable

代码:isinstance(对象,Iterable),如果对象为可迭代对象则返回True,否则返回False

2、迭代器(iterator) 

迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个函数:iter()和next()

通过iter()函数取得可迭代对象的迭代器:

以上代码也可写为:

  • iter()调用该对象的__iter__方法,并把__iter__方法的返回结果作为自己的返回值
  • 再使用next()函数来调用__next__方法

当取完元素后,再使用next()获取下一条数据时会引发StopIteration异常

深入剖析:

先通过iter()函数获取可迭代对象Iterable的迭代器,然后对获取到的迭代器不断调用next()方法来获取下一个值并将其赋值给item,当遇到StopIteration的异常后循环结束。

3、可迭代对象和迭代器的转换

可迭代对象:iterable          迭代器对象:iterator

  • 总结

(1)可迭代对象可以通过__iter__()方法变成迭代器对象

(2)如果一个对象拥有iter()方法,是可迭代对象;如果一个对象拥有next()方法,是迭代器对象

(3)定义可迭代对象,必须实现iter()方法;定义迭代器,必须实现iter方法和next方法


http://chatgpt.dhexx.cn/article/S2nTB65U.shtml

相关文章

day18:File(构造方法、创建、删除文件或者文件夹、 判断性、重命名与剪切、得到性、过滤性)、递归(遍历文件夹文件)

一 回顾 1.HashMap集合 特点: A.数据结构也是Hash表结构 B.多线程中是不安全 C.默认的数组的初始化容量是16 2.HashMap与HashSet的比较 相同点:都是hash表结构来存储 不同点: A.HashSet的底层就是使用HashMap来实现 B.HashSet的数据结构针对与是元素 HashMap的…

Python 文件和文件夹 01

Python文件和文件夹 01 ① 修改当前目录,首次利用 pandas 读取 excel 表 os.chdir import os import pandas as pd os.chdir(C:/aa/bb/cc) os.chdir(rC:\aa\bb\cc)数据 pd.read_excel("temp.xlsx") 等同于当前路径下的 temp.xlsx 文件。print(数据)② 字…

删除win10无限嵌套文件夹

解决由于失误操作导致WIN10系统产生无限循环的文件夹问题 昨天本想自己写一个拷贝文件的小程序,结果出现了点小问题,整出了一个无限循环的文件夹,直接删除出出现错误代码提示,显示无法删除,然后我就去网上找解决方案&…

计算机专硕一般研二在干嘛,专硕一般研二在干嘛,专硕两年怎么安排

一般学习两年。 硕士学位的学制取决于您申请的学校和专业。 不同的学校可能不同,同一所学校的硕士学位也可能不同。 许多学校还设有两年半的学制,甚至三年制的学制。本文一起来看一下吧~ 一.什么人适合读专硕 1、英语相对一般的人 学硕主要考英语一试卷&…

研二导师画大饼,不给时间实习,咋办

一个小学弟最近咨询我 我是本硕都在一所双非一本就读,软件工程,目前研二,23 届。我想在暑期进行一下今年的实习,想着可能对后面秋招和来年春招有帮助,但是实验室管的严导师不放时间(其实我当时是为了毕业条件和平时研…

2022年终总结与2023新年展望

前言 时间过得太快了,虽然写博客已经很多年了,但是年终总结一直由于种种原因没有写过,2022年确实是魔幻的一年,不知不觉自己也已经研二了,因为疫情的原因突然放开,提前放假回家,借此机会写一下…

研二(上学期)计划安排

今天是9.17号了,时间过得很快,学习的脚步永远停不下来。 时间的安排就不说了,真的是计划赶不上变化,一句话,除了外聘上课和研助,其他的时间必须到达实验室,(一个星期一次总结&#…

计算机科学与探索、计算机工程与应用投稿经验分享

目录 等级: 经验: 总结: 等级: 计算机科学与探索 CCFb 计算机工程与应用 CCFB(2022年由c升为b) 经验: 首先本人主要关注计算机人工智能图像处理领域,北京某高校研二学生,水平不高。在研一…

计算机专业学生如何写一份优秀的校招简历(大三、研二学生请进)

计算机专业学生如何写一份优秀的校招简历(大三、研二学生请进) 最近讲了一节简历的公开课,还是蛮有价值的,想分享给大家 主要是讲解计算机相关专业的学生,就业找工作的简历,该如何书写。 内容包含: 1、快速掌握一份校…

快速傅里叶变换(研二的我终于弄懂了)

研二的我仍然对快速傅里叶变换一知半解,于是乎,本着待在家里,能耗时间就多耗点,不知道何年马月我才可以在外面快乐的奔跑~~ 快速傅里叶变换的实现(c版本) 在做项目的时候,需要用到matlab里的ff…

华电软工非全研究生学习工作总结-研二开学总结

昨晚加班太晚,就打算调休一天,养好精神,晚上开车回老家,开启假期模式。午休过后没啥事,随后就想着水一篇文章吧。 1、研究生学习 1.1、学生证来啦 今天对学生们来说,最大的喜事就是,期待了一学期的研究生学生证从北京邮寄了。看到微信群同学们开心的晒着学生证,我也期…

爆肝三天,我整理了这份春招攻略【针对大三/研二】

大家好,我是菜饼。长文预警,建议收藏。 18级的师弟妹们,这份春招攻略,希望可以让你们清醒一下。 (当然,本篇不仅仅适用于大三同学,也适用于研一研二,打算走互联网开发方向的同学。&…

再见北理工:忆北京研究生的编程时光

两年前,我本科毕业写了这样一篇文章:《 回忆自己的大学四年得与失 》,感慨了自己在北理软院四年的所得所失;两年后,我离开了帝都,回到了贵州家乡,准备开启一段新的教师生涯,在此也写…

研究生学姐二次考研的感悟:关于择校选专业专硕or学硕

今天想跟大家分享一下我第一次考研,第二次考研,以及现在读研的一些经历。如果你能从中获得启发,我很荣幸,如果你觉得我说得不对,那就是你对。以下我输出的观点仅代表我个人,每个人的成长环境和想法都不一样…

优秀!研二实习生“阿里+字节+拼多多+美团”四杀offer

本人就读于某无导师制培训班,研二在百度腾讯实习过,目前想转java技术栈或wlb一下,就投递了一些外企和美团阿里,至于字节与拼多多,个人实在无法接受周末上班,就没有投递了。 年前准备了一下简历&#xff0c…

研一一整年都在搞深度学习,研二醒悟打算转开发

作者:阿秀阿秀的学习笔记:https://interviewguide.cn 你好,我是阿秀。 最近阿秀组建了自己的学习圈子,其实圈子里以前只有我一个人的,每天适当充电、看看书或者看一些教学视频,也会简单打卡记录自己的学习进…

【阶段总结】研二上学期总结

写在前面 距离上一篇【阶段总结】研一上学期总结又过去了将近一年的时间,而这一篇的阶段性总结也是在我入驻csdn平台后的第四篇的年度总结。从一开始的犹犹豫豫到现在坚持不定期的写作和总结,回想这几年的历程,还好有个csdn这个平台可以记录…

NLP领域论文笔记【研一下研二上】01

一、《Heterogeneous Graph Neural Networks for Extractive Document Summarization》 1、除句子外,还包含不同粒度级别的语义节点,这些另外的节点可以作为句子间的媒介,以加强句子间的关系。文件摘要是提取原始文档中的句子,把…

网页加载慢的测试方法

测试网页代码加载速度 背景测试方法 背景 最近用Hbuilder写了一个简单的网页,但是用到了很多的图片,本地加载很快,但是别人访问的时候加载很慢。 测试方法 百度的话 都是一些不着调的。打开你的网页,然后F12,选择ne…

Selenium自动化测试网页加载太慢怎么办

遇到网页加载慢,selenium运行效率降低,可以通过修改页面加载策略提升自动化效率。 selenium加载很慢 通过URL导航到新页面时,默认情况下,Selenium将等待文档完全被加载才会执行下面的操作,此时网页的加载状态为 comp…