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

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

一、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()

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

fac903a199f84acb901e136dd290d87a.png


  • os.chdir(path)


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


  • os.listdir(path)


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


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


6db2d908e6c34162a07c150eb88cbfef.png


2fbfe5d89bed4c0fa5fe9534b5c9984b.png


   

  •  os.mkdir(path)


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


  • os.makedirs(path)


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


6d29408d5aa64d20af3072c1a0f763f9.png


7d2dfc6a820d482dbc95fdde2a51de0f.png


  • os.rename(旧名,新名)


文件或文件夹重命名

8ccde8067a7d4665ae6ecde09f4e6303.png


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


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

c6665df92f8546fa83f873f7076df2ba.png


6415900a5e554ecd8bd4c24e4eb0b91b.png


附上代码源码

import os
def travel(path):
    if os.path.isfile(path): # 判断所给的路径是否是文件,如果是文件则结束代码
        return
    file_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)
                continue
        if 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


0b1d594d4b91434bb5d1ed7fc187b895.png


2、迭代器(iterator)


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


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


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


9e32009327c8463db14738eb6a7a20e7.png


以上代码也可写为:

2400629505074ff0a65c4a9b5833527f.png


  • iter()调用该对象的__iter__方法,并把__iter__方法的返回结果作为自己的返回值


  • 再使用next()函数来调用__next__方法


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


d4aa50e5916543c48a3efb39f93d7110.png


深入剖析:

496506fc2bfd471d8202625b77ae96a5.png

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




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


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


2cd0be91c696421487c852f6874c1c6c.png


  • 总结


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


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


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

相关文章
|
11小时前
|
Python
【Python操作基础】——字典,迭代器和生成器
【Python操作基础】——字典,迭代器和生成器
|
2天前
|
C++ Python
Python中的类与对象
Python中的类与对象
6 1
|
2天前
|
Python Windows
python中的异常与模块
python中的异常与模块
9 1
|
3天前
|
存储 数据处理 Python
python 之map、zip和filter迭代器示例详解
python 之map、zip和filter迭代器示例详解
8 0
|
3天前
|
存储 程序员 Python
深入理解Python中的生成器和迭代器
本文将深入探讨Python中生成器和迭代器的概念、原理以及它们在编程中的应用。通过详细解析生成器和迭代器的工作机制,读者将能够更好地理解Python中的迭代器协议、生成器函数以及生成器表达式的使用方法。同时,本文还将介绍生成器和迭代器在Python中的一些常见应用场景,并提供一些实用的编程技巧和最佳实践。
|
11天前
|
JSON 数据格式 Python
Python标准库中包含了json模块,可以帮助你轻松处理JSON数据
【4月更文挑战第30天】Python的json模块简化了JSON数据与Python对象之间的转换。使用`json.dumps()`可将字典转为JSON字符串,如`{"name": "John", "age": 30, "city": "New York"}`,而`json.loads()`则能将JSON字符串转回字典。通过`json.load()`从文件读取JSON数据,`json.dump()`则用于将数据写入文件。
17 1
|
12天前
|
Python
Python实现压缩解压---tarfile模块详解
Python实现压缩解压---tarfile模块详解
|
12天前
|
Linux Python Windows
Python中time和datetime模块详解
Python中time和datetime模块详解
|
13天前
|
存储 Linux 数据安全/隐私保护
python的压缩模块zipfile详解
python的压缩模块zipfile详解
|
13天前
|
Linux Python Windows
python的os模块详细解读(二)
python的os模块详细解读(二)