python标准库os中的方法listdir,python os.dir

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: