加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

python学习笔记77:os.scandir学习

(2020-10-27 11:17:40)
标签:

python

os.scandir(path)

分类: 计算机
os模块有一个和listdir相近的功能scandir(path),也是遍历文件夹下的子文件夹和文件,但不会深入子文件夹的下一层。据说当文件夹下内容非常多,比如上万的时候,这个方法比listdir效率高,Python 官方也推荐我们使用 os.scandir() 来遍历目录。scandir具有以下属性和方法:
name  条目的文件名,相对于 scandir path 参数( 对应于 os.listdir的返回值)
path    输入路径 NAME ( 不一定是绝对路径) --与 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() )。
inode:    返回项的节点数;返回值在 DirEntry 对象上缓存
我也有点晕。
还是通过例子来理解吧。
import os
path="d:\my project\python"
objs=os.scandir(path)
for obj in objs:
    #以下程序打印文件夹下面的文件名
    #print(path+"下面的文件有:")
    if obj.is_file():
        print(obj.name)
    #以下程序打印子文件夹名列表
    #print(path+"下面的子文件夹有")
    if obj.is_dir():
        print(obj.name)
保存运行,就可以输出="d:\my project\python"下面的子文件夹和文件名字了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有