【python】os.scandir

函数os.scandir

scandir方法返回了一个DirEntry迭代器对象,它非常轻巧方便,并且能告诉你迭代文件的路径。之前案例中,我们检查了entry是一个文件或者是一个文件夹,与此同时,我们添加它的路径到列表中。在 Python 3.5版本中,新添加了 os.scandir()方法,它是一个目录迭代方法。os.scandir() 的运行效率要比 os.walk 高。在 PEP 471 中,Python 官方也推荐我们使用 os.scandir() 来遍历目录。

具有以下属性和方法:

  • name: 文件名,相对于 scandir path 参数( 对应于 os.listdir的返回值)
  • path: 条目的完整路径名(不一定是绝对路径) --与 os.path.join(scandir_path, entry.name)
  • is_dir(, follow_symlinks=True): 是否为目录。类似于 pathlib.Path.is_dir(),但返回值在 DirEntry 对象上是缓存;大多数情况下不需要系统调用;如果 follow_symlinks 是 false,则不要跟随符号链接。
  • is_file(, follow_symlinks=True): 是否为文件。类似于 pathlib.Path.is_file(),但返回值在 DirEntry 对象上是缓存;大多数情况下不需要系统调用;如果 follow_symlinks 是 false,则不要跟随符号链接。
  • is_symlink(): 类似 pathlib.Path.is_symlink(),但返回值缓存在 DirEntry 对象上;大多数情况下不需要系统调用
  • stat(*, follow_symlinks=True): 文件信息。类似 os.stat(),但返回值缓存在 DirEntry 对象上;不需要对 Windows (。除了符号符号外) 进行系统调用;如果 follow_symlinks 是 false,则不跟随符号链接( 像 os.lstat() )。Python os.stat() 方法 | 菜鸟教程
    • st_ size:文件的体积大小(单位: bytes)
    • st_ atime: 文件的最近访问时间
    • st_mtime:文件的最近修改时间
    • st_ctime: Windows下表示创建时间
    • st_ birthtime:只在Mac、Linux 下可用,表示创建时间
  • inode(): 返回项的节点数;返回值在 DirEntry 对象上缓存

 

1. 实例

import os
import time

items = os.scandir('/root/test')
# print(items)
for file in items:
    print(f'名称:{file.name}')
    print(f'文件的体积大小:{file.stat().st_size}')
    print(f'文件的最近访问时间:{file.stat().st_atime}')
    print(f'文件的最近修改时间:{file.stat().st_mtime}')
    print(f'创建时间:{file.stat().st_ctime}')
    # file.stat()返回的都是Unix时间戳 可以使用python time模块将其转换为正常的时间格式
    print(f'文件的最近访问时间:{time.ctime(file.stat().st_atime)}')
    print(f'路径:{file.path}')
    if file.is_dir(): 
        print('这是文件夹')
    if file.is_file():
        print('这是文件')
    print("========")

输出:

[root@node01 ~]# tree test
test
|-- dd
`-- ss

0 directories, 2 files
[root@node01 ~]# python3 ./python/demo01.py
名称:dd
文件的体积大小:5
文件的最近访问时间:1685454617.9751036
文件的最近修改时间:1685454616.64407
创建时间:1685454616.64707
文件的最近访问时间:Tue May 30 21:50:17 2023
路径:/root/test/dd
这是文件
========
名称:ss
文件的体积大小:3
文件的最近访问时间:1685454621.9862053
文件的最近修改时间:1685454621.3031878
创建时间:1685454621.305188
文件的最近访问时间:Tue May 30 21:50:21 2023
路径:/root/test/ss
这是文件
========

 

posted @ 2023-05-30 16:08  苏格拉底的落泪  阅读(1021)  评论(0编辑  收藏  举报