python标准库os中的方法listdir,python os.dir
要测试listdir函数,构建以下目录树:
D: \测试目录
2021年05月02日23时48分导演。
2021年5月2日23时48分导演.
目录01
2021年4月3日12时09分
目录02
2021年4月3日12时09分
目录03
2个文件,2748字节
D:\test\01的目录
2021年05月02日2 2时56分导演
2021年05月02日2 2时56分.
2021/04/03 12:09
2021/04/03 12:09
2021/04/03 12:09
3个文件,3656字节
D:\test\02的目录
2021年05月02日2 2时56分导演
2021年05月02日2 2时56分.
2021/04/03 12:09 2014 2.1 py
2021/04/03 12:09 2195 2.2 py
2021/04/03 12:09
2021/04/03 12:09
4个文件,6644字节
D:\test\03的目录
2021年05月02日23时48分导演。
2021年5月2日23时48分导演.
0个文件0个字节
列出的文档总数:
9个文件,13,048字节
1个目录316,223,115,264字节可用
os.listdir 相当于dos命令dir d:\test,只显示一级目录下的文件和子目录。
导入路径=r d:\ test OS . listdir(path)[ 01 , 01.py , 02 , 02.py]返回的列表分不清是文件还是子目录。可以通过os.path.isdir()或者isfile()来判断:
def isPath(f):如果OS . path . is DIR(f)else [(f is path(path \ \ f))for f in OS . listdir(path)][ 01 DIR , 01.py , 02DIR ,02.py] def ispath (f):如果OS . path . is file(f)else DIR [(f is path(path \ \ f))for f in OS . listdir(path)][ 01 DIR , 01.py
[f DIR if OS . path . is DIR(path \ \ f)Else f for f in OS . listdir(path)][ 01 DIR , 01.py , 02DIR , 02.py][f if OS . path . is file(path \ \(f)Else f DIR for f in OS . listdir(path)][ 01 DIR , 01.py , 02dir , 02 . py ]还可以使用listdir()返回子目录中的文件数。如果有错误,返回-1表示文件(返回0表示目录为空):
ispath(path):try:return len(list(OS . listdir(path)))except notdirectoryerror:return-1[is path(path \ \ I)for I in OS . listdir(path)][3,-1,4,-1] DOS命令
D:\dir测试
驱动器d中的卷是一个文档。
该卷的序列号是109A-0446
D: \测试目录
2021年05月02日23时48分导演。
2021年5月2日23时48分导演.
目录01
2021年4月3日12时09分
目录02
2021年4月3日12时09分
目录03
2个文件,2748字节
5个目录316,223,320,064字节可用
这四列是时间、目录、文件大小和文件名。
功能操作系统。path.getctime (f) OS。path.getatime (f) OS。path.getmtime (f)分别是创建捕获文件的时间、创建访问的时间和访问修改的时间。
测试的dir是os.path.getmtime(f),但是返回的时间戳:一个表示时间的浮点数。
f win move 1 . py OS . path . getmtime(f)1619789379.3554473可以通过使用时间库的localtime()和strftime()转换成与dir命令相同的格式:
import timestamp=time . local time(timestamp)time . strftime( %y/% m/% d % h:% m ,time struct)注意:年、小时和分钟应该用大写字母(% y是两位数的年份;%h是英国月份;%m是数字月份)。
最后用os.path.getsize(f) 得到文件大小,再加上os.path.isdir()和os.path.isfile()。基本上几个要素都是完整的。
代码如下:
import os,time files=filesizes=0 path= d:\ \ test fn=OS . listdir(path)fn[ 01 , 01.py , 02 , 02.py , 03 ]FDT=lambda t:time . strftime( % Y/% M/% d % H:% M ,time . local time(t))for f in fn:F0=path \ \ ff1=FDT(OS . path . getmtime(F0))filesize=OS . path . getsize(F0)F2=.ljust(16)if OS . path . is dir(F0)else格式(文件大小,,)。r just(16)if OS . path . is file(F0):filesize=filesize;files=1print(f1,f2,f)2021/05/02 22:56 DIR 012021/04/03 12:09 1,486 01 . py 2021/05/02 22:56 DIR 022021/04/03 12:09 1,2202py 2021/05/02 23:48 dir 03 strsize=format(filesizes,,)print(u \ t列出的文件总数:\ n \ t * 3 f { files } files \ t \ t { strsize }。
有三个要素:卷、序列号、磁盘剩余字节数没有实现,其他都模拟成功了。
注意listdir()也会列出隐藏的属性,所以上面的代码对应的是dir /a a。
还有一个dir的常用参数,/s,是文章开头列出所有目录树的列表,对应的是os.walk(path),这个会单独写。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。