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))

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • p6spy的使用和配置「建议收藏」

    p6spy的使用和配置「建议收藏」【注意】:本教程适用与springboot项目1.加载jar包<!–sql打印–><!–https://mvnrepository.com/artifact/p6spy/p6spy–><dependency><groupId>p6spy</groupId><artifactId>p6spy</artifactId>

  • nginx启动命令和停止命令(linux重启nginx)

    进入nginx所在目录:打开cmd命令窗口,进入nginx所在目录。在nginx所在目录下执行nginx启动、停止命令。nginx启动命令:【startnginx】或【nginx.exe】nginx停止命令:【nginx.exe-squit】或【nginx.exe-sstop】…

  • SQL注入的原理解说,挺好!

    SQL注入的原理解说,挺好!

    2021年12月31日
  • traceroute 命令使用方法详解

    traceroute 命令使用方法详解通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MSWindows中为tracert。traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)..

  • a算法解决八数码实验报告_人工智能核心算法

    a算法解决八数码实验报告_人工智能核心算法实验一A*算法求解8数码问题一、实验目的熟悉和掌握启发式搜索的定义、估价函数和算法过程,并利用A*算法求解N数码难题,理解求解流程和搜索顺序。二、实验原理A*算法是一种启发式图搜索算法,其特点在于对估价函数的定义上。对于一般的启发式图搜索,总是选择估价函数f值最小的节点作为扩展节点。因此,f是根据需要找到一条最小代价路径的观点来估算节点的,所以,可考虑每个节点n的估价函数值为两个分量:从起始节点到节点n的实际代价g(n)以及从节点n到达目标节点的估价代价h(n),且hn≤h*n,h*n

    2022年10月30日
  • LLDP协议原理

    LLDP协议原理目录LLDP概念LLDP报文LLDP工作原理1、LLDP概念LLDP(LinkLayerDiscoveryProtocol,链路层发现协议)。LLDP定义在802.1ab中,它是一个二层协议,它提供了一种标准的链路层发现方式。LLDP协议使得接入网络的一台设备可以将其主要的能力,管理地址,设备标识,接口标识等信息发送给接入同一个局域网络的其它设备。当一个设备从网络中接收到其它设备的这些信息时,它就将这些信息以MIB的形式存储起来。 这些MIB信息可用于发现设备的物理拓扑结构以及管理配置信息。

发表回复

您的电子邮箱地址不会被公开。

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