python遍历本地文件系统 按文件大小排序

python遍历本地文件系统 按文件大小排序

在这个例子中,主要会用到python内置的和OS模块的几个函数:

    os.walk() : 该方法用来遍历指定的文件目录,返回一个三元tuple(dirpath, dirnames, filenames) ,其中dirpath为当前目录路径,dirnames为当前路径下的文件夹,filenames为当前路径下的文件
    os.path.join() :可以用来连接目录和文件名,这样就可以得到某个文件的全路径了
    os.path.getsize() :获取制定文件的文件size ,配合os.path.join()使用, 如果传入的为文件夹路径,返回0L
    sorted : 迭代一个items ,然后返回一个新的排序好的list,不会影响原对象

有了这几个函数后,遍历本地文件就非常简单了,前三个函数不详细说,

这边主要讲下第四个函数sorted 的用法:

讲sorted前,先介绍一下iterable ,中文意思是迭代器。

1. Python的帮助中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象。

iteralbe主要包括3类:
第一类是所有的序列类型,比如list(列表)、str(字符串)、tuple(元组)。
第二类是一些非序列类型,比如dict(字典)、file(文件)。
第三类是你定义的任何包含__iter__()或__getitem__()方法的类的对象。

2. python中对sorted方法的讲解:

sorted(iterable[, key][, reverse])

作用:Return a new sorted list from the items in iterable.

其中 key, 和reverse为可选参数

key指定一个接收一个参数的比较函数,用来从买个list元素中提取一个用于比较的关键字: 例如key=str.lower. 默认值是None(直接比较元素)

reverse是一个布尔值。如果设置为True,列表元素将被倒序排列。

在原来的版本中还有个cmp参数,现在已经去掉了,兼容方案是 使用 functools.cmp_to_key() 把cmp函数转换为key函数。

key 返回一个 lambda ,所谓 lambda就是一个匿名小函数,lambda d: d[1] 对应于代码就是:

def (d):
    return d[1]

对应到字典中,就是返回字典键值对中的值,d[0]表示键,对字典使用sorted会返回一个元祖list

好了,基本的函数都讲完了,下面附上例子的相应代码:

# -*-coding:utf-8-*-
import os

filePath = ‘D:\temp’

fileMap = {}
size = 0

# 遍历filePath下的文件、文件夹(包括子目录)
for parent, dirnames, filenames in os.walk(filePath):
    for dirname in dirnames:
        print(‘parent is %s, dirname is %s’ % (parent, dirname))

    for filename in filenames:
        print(‘parent is %s, filename is %s’ % (parent, filename))
        print(‘the full name of the file is %s’ % os.path.join(parent, filename))
        
        size = os.path.getsize(os.path.join(parent, filename))
        fileMap.setdefault(os.path.join(parent, filename), size)

filelist = sorted(fileMap.items(), key=lambda d: d[1], reverse=False)
for filename, size in filelist:
    print(“filename is %s , and size is %d” % (filename, size))

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119596.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月21日 下午4:00
下一篇 2021年11月21日 下午4:00


相关推荐

  • bt种子php啥格式的,bt种子是什么意思(bt种子的格式及文件结构)

    bt种子php啥格式的,bt种子是什么意思(bt种子的格式及文件结构)-文字稿-如果你想要下载一集不存在的回形针视频,你会怎么做?最简单的方法当然是找一个有资源的哥们——每羊,让他把这期视频发给你。早期互联网,大家就是这么共享文件的,但是这样也有很多问题。比如下载的人一多,每个人分配到的带宽就变小了,下载速度会变慢。更危险的是,这期视频是敏感资源,你的哥们本来就不应该分享给你,如果每羊被抓了,大家也都别下载了。针对这些问题,美国工程师BramCohen在20…

    2025年5月26日
    5
  • 关于this指针

    关于this指针一个类的对象中实际只包含了该对象的数据成员信息,当我们创建了多个类的对象时,使对象1调用该类的成员函数,为什么可以改变对象1中的信息,而不去设置其他对象的信息?成员函数在类中只有一份,所有该类的对象共同使用,编译器是如何识别并处理的呢?编译器识别一个类分为三步:1.识别类的类名2.识别类的成员变量3.识别类的成员函数并对成员函数进行修改修改方式:成员函数有一个隐藏…

    2022年5月16日
    53
  • 外网访问内网的方法

    外网访问内网的方法外网访问内网的方法只有两种 1 NAT 端口映射 2 VPN

    2026年3月19日
    2
  • vlan的原理和作用_生态因子作用的基本原理

    vlan的原理和作用_生态因子作用的基本原理相关名词:VirtualLocalAreaNetwork—VLAN、VirtualPrivateNetwork—VPN、VirtualRedundancyProtocol—VRRP等。一。VLAN的作用1.把一个广播帧所能到达的整个范围称为二层广播域,简称广播域。显然,一个交换网络其实就是一个广播域。在该网络中,假定PC0向PC10发送一个单播帧Y…

    2022年8月10日
    12
  • java解决硬编码_工具类 解决硬编码问题

    java解决硬编码_工具类 解决硬编码问题packageJdbcU importjava io FileReader importjava io IOException importjava net URL importjava sql importjava util Properties jdbc 工具类 publicclassJ privatestati private

    2026年3月26日
    3
  • java decimal保留两位小数_bigdecimal两位小数

    java decimal保留两位小数_bigdecimal两位小数那么,如何学习Kafka源码??我觉得最高效的方式就是去读最核心的源码,先看一张 Kafka结构图 以及 Kafka源码全景图梳理一下关于 Kafka框架,找到学习的重点。其次,我要说的就是一个Kafka源码解析的文档——《Kafka源码解析与实战》前5章分别是:Kafka简介、Kafka的架构、Broker概述、Broker的基本模块、Broker的控制管理模块**第1章Kafka简介:**介绍Kafka诞生的背景、Kafka在Linked

    2026年2月23日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号