- 零基础学Python(第2版)
- 黄传禄 张克强 赵越
- 1415字
- 2025-03-22 17:27:15
7.3 文件处理示例——文件属性浏览程序
本节将运用前面学习的内容,设计一个浏览文件属性的程序。通过给定的目录路径查看文件的名称、大小、创建时间、最后修改日期和最后访问日期。设计一个函数showFileProperties(path),path表示目录的路径,该函数可以查看path目录下所有文件的属性。showFileProperties()的实现大致分为如下3个步骤。
1)遍历path指定的目录,获取每个子目录的路径。
2)遍历子目录下的所有文件,并返回文件的属性列表。
3)分解属性列表,对属性列表的值进行格式化输出。
步骤1可以采用7.2.2小节的思路实现目录的遍历。步骤2通过os模块的函数stat()返回文件的属性列表,该属性列表包括文件的大小、创建时间、最后修改时间、最后访问时间等信息。步骤3通过列表的索引获取文件的各个属性。对于文件的时间属性,调用time模块的函数localtime()返回时间类型,并结合字符串的格式化输出文件的时间属性。下面【例7-12】这段代码调用函数showFileProperties(),列出了D:\developer\python\example\07\7.2.2路径下所有文件的属性。
【例7-12.py】
01 import time,os # 导入time,os模块 02 def showFileProperties(path): 03 '''显示文件的属性。包括路径、大小、创建日期、最后修改时间,最后访问时间''' 04 for root,dirs,files in os.walk(path,True): 05 print ("位置:" + root) 06 for filename in files: 07 state = os.stat(os.path.join(root, filename)) 08 info = "文件名: " + filename + " " 09 info = info + "大小:" + ("%d" % state[-4]) + " " 10 t = time.strftime("%Y-%m-%d %X", time.localtime(state[-1])) 11 info = info + "创建时间:" + t + " " 12 t = time.strftime("%Y-%m-%d %X", time.localtime(state[-2])) 13 info = info + "最后修改时间:" + t + " " 14 t = time.strftime("%Y-%m-%d %X", time.localtime(state[-3])) 15 info = info + "最后访问时间:" + t + " " 16 print (info) 17 18 if __name__ == "__main__": 19 path = r"D:\python例题源代码\ch07code" 20 showFileProperties(path)
【代码说明】
·第4行代码调用函数os.walk()对path指定的路径进行遍历。
·第5行代码输出path路径下每个子目录的路径。输出结果如下所示。
位置:D:\python例题源代码\ch07code
·第6行代码对每个子目录进行遍历,返回文件名称。
·第7行代码调用os.stat()返回文件的属性列表。
·第9行代码,state[-4]表示文件的大小。
·第10行代码调用time模块的strftime()把时间类型转换为字符串。其中state[-1]表示文件的创建时间。
·第12行代码,state[-2]表示文件的最后修改时间。
·第14行代码,state[-3]表示文件的最后访问时间。
·第16行代码输出文件的属性信息。输出的内容如下所示。
文件名: hello.txt 大小:14 创建时间:2019-07-25 14:56:01 最后修改时间:2019-07-25 16:05:43 最后访问时间:2019-07-25 14:56:01 文件名: hello2.txt 大小:26 创建时间:2019-07-25 14:19:13 最后修改时间:2019-07-25 08:16:24 最后访问时间:2019-07-25 14:19:13 文件名: mysqlconfig.ini 大小:149 创建时间:2019-07-25 13:05:57 最后修改时间:2019-07-25 14:03:06 最后访问时间:2019-07-25 13:05:57 文件名: record.log 大小:0 创建时间:2019-07-25 14:20:55 最后修改时间:2019-07-25 14:20:55 最后访问时间:2019-07-25 14:20:55 文件名: 例7-1.py 大小:168 创建时间:2019-07-25 08:05:47 最后修改时间:2019-07-25 08:05:47 最后访问时间:2019-07-25 08:05:47 文件名: 例7-10.py 大小:359 创建时间:2019-07-25 14:09:33 最后修改时间:2019-07-25 14:09:33 最后访问时间:2019-07-25 14:09:33 文件名: 例7-11.py 大小:256 创建时间:2019-07-25 14:13:39 最后修改时间:2019-07-25 14:15:52 最后访问时间:2019-07-25 14:13:39 文件名: 例7-12.py 大小:883 创建时间:2019-07-25 16:20:48 最后修改时间:2019-07-25 16:28:14 最后访问时间:2019-07-25 16:20:48 文件名: 例7-2.py 大小:329 创建时间:2019-07-25 08:07:29 最后修改时间:2019-07-25 08:07:29 最后访问时间:2019-07-25 08:07:29 文件名: 例7-3.py 大小:325 创建时间:2019-07-25 08:10:56 最后修改时间:2019-07-25 08:16:23 最后访问时间:2019-07-25 08:10:56 文件名: 例7-4.py 大小:262 创建时间:2019-07-25 08:20:09 最后修改时间:2019-07-25 08:20:29 最后访问时间:2019-07-25 08:20:09 文件名: 例7-5.py 大小:348 创建时间:2019-07-25 08:23:03 最后修改时间:2019-07-25 08:25:18 最后访问时间:2019-07-25 08:23:03 文件名: 例7-6.py 大小:725 创建时间:2019-07-25 13:22:32 最后修改时间:2019-07-25 13:33:00 最后访问时间:2019-07-25 13:22:32 文件名: 例7-7.py 大小:356 创建时间:2019-07-25 13:49:45 最后修改时间:2019-07-25 13:50:34 最后访问时间:2019-07-25 13:49:45 文件名: 例7-8.py 大小:319 创建时间:2019-07-25 13:56:54 最后修改时间:2019-07-25 13:57:10 最后访问时间:2019-07-25 13:56:54 文件名: 例7-9.py 大小:381 创建时间:2019-07-25 14:03:05 最后修改时间:2019-07-25 14:03:05 最后访问时间:2019-07-25 14:03:05
注意 os.stat()的参数必须是绝对路径。因此,需要先调用os.path.join(root,filename)连接文件的路径和文件名。