• python-文件操作常用功能-2


    目录

    列出子目录

    获取文件属性


    列出子目录

    如果要列出子目录而不是文件,请使用下面的方法。现在展示如何使用 os.listdir()os.path() :

    1. import os
    2. basepath = 'my_directory'
    3. for entry in os.listdir(basepath):
    4. if os.path.isdir(os.path.join(basepath,entry)): # os.path.isdir 判断是否是目录
    5. print(entry)
    6. '''
    7. shell1
    8. shell2
    9. '''

    当多次调用 os.path.join() 时,以这种方式操作文件系统就会变得很笨重。

    下面是如何使用 os.scandir()

    1. import os
    2. basepath ='my_directory'
    3. with os.scandir(basepath) as entries:
    4. for entry in entries:
    5. if entry.is_dir():
    6. print(entry.name)

    与文件列表中的示例一样,此处在 os.scandir() 返回的每一项上调用 .is_dir() 。如果这项是目录,则 is_dir() 返回 True,并打印出目录的名称。输出结果和上面相同。

    下面是如何使用 pathlib.Path()

    1. from pathlib import Path
    2. basepath = Path('my_directory')
    3. for entry in basepath.iterdir():
    4. if entry.is_dir():
    5. print(entry.name)
    6. '''
    7. shell1
    8. shell2
    9. '''

    .iterdir() 迭代器返回的每一项上调用 is_dir() 检查是文件还是目录。如果该项是目录,则打印其名称,并且生成的输出与上一示例中的输出相同。


    获取文件属性

    Python可以很轻松的获取文件大小和修改时间等文件属性。可以通过使用 os.stat()os.scandir()pathlib.Path 来获取。

    os.scandir()pathlib.Path() 能直接获取到包含文件属性的目录列表。这可能比使用 os.listdir() 列出文件然后获取每个文件的文件属性信息更加有效。

    下面的例子显示了如何获取 my_directory 中文件的最后修改时间。以时间戳的方式输出:

    1. import os
    2. with os.scandir('my_directory') as entries:
    3. for entry in entries:
    4. info = entry.stat()
    5. print(info.st_mtime)

    os.scandir() 返回一个 ScandirIterator 对象。ScandirIterator 对象中的每一项有 .stat() 方法能获取关于它指向文件或目录的信息。.stat() 提供了例如文件大小和最后修改时间的信息。在上面的示例中,代码打印了 st_time 属性,该属性是上次修改文件内容的时间。

    pathlib** 模块具有相应的方法,用于获取相同结果的文件信息:**

    1. from pathlib import Path
    2. basepath = Path('my_directory')
    3. for entry in basepath.iterdir():
    4. info = entry.stat()
    5. print(info.st_mtime)

    在上面的例子中,循环 .iterdir() 返回的迭代器并通过对其中每一项调用 .stat() 来获取文件属性。st_mtime 属性是一个浮点类型的值,表示的是时间戳。为了让 st_time 返回的值更容易阅读。

  • 相关阅读:
    v4l2打开相机获取流demo及命令打开相机设备
    防火墙NAT智能选举综合实验
    k8s实战入门——Service
    力扣刷题篇之数与位2
    CSS3实现上下拉长加载动画效果
    使用ScottPlot库在.NET WinForms中快速实现大型数据集的交互式显示
    SAP UI5 里的 Busy Indicator 控件使用概述
    DAY28:Linux、Windows 系统提权
    高性能MySQL-创建高性能索引
    Spring 中的 Bean
  • 原文地址:https://blog.csdn.net/rx3225968517/article/details/137278614