在windows命令行中,如果我们想查看当前目录下的子文件、目录,可以使用dir命令
在Python中如果想要操作文件和目录,则需要用到Python的内置模块os,下面我们就用os模块在python中实现dir功能
import os
from datetime import datetime
# 利用os模块实现windows命令行中的 'dir' 命令
# 输出 文件的 最后修改时间,文件类型,size,name,
pwd = os.path.abspath('.') #获取当前目录的绝对路径
print('%s 的目录' % pwd)
print('%s%10s%9s %s' % ('最后修改时间', '类型', 'size', '文件名'))
for f in os.listdir(pwd):
f_size = os.path.getsize(f) #文件大小
modified_time = datetime.fromtimestamp(os.path.getmtime(f)).strftime('%Y/%m/%d %H:%M')
f_type = '<DIR>' if os.path.isdir(f) else '' #如果是子目录,类型是<DIR>
print('%s%9s%9d %s' %(modified_time, f_type, f_size, f))
结果如下:
C:\Users\zry71\PycharmProjects\Python笔记 的目录
最后修改时间 类型 size 文件名
2017/05/31 02:02 <DIR> 4096 .idea
2017/05/28 12:50 370 decorator.py
2017/05/31 02:10 1619 IO_learn.py
2017/05/28 17:53 731 learn_class.py
2017/05/28 15:37 143 module.py
2017/05/24 14:26 322930 test.png
2017/05/28 15:37 2915 thumb.jpg
2017/05/26 23:32 148 回数.py
2017/05/29 18:22 1371 斐波那契.py
2017/05/26 17:37 249 杨辉三角.py
2017/05/26 18:27 447 素数.py
- os.path.getmtime(filename) 获取文件的修改时间,返回时间戳,因此需要用到Python内置的datetime模块来处理
- os.path.isdir(filename) 判断是否子目录,同理os.path.isfile(filename)用了判断是否是文件,如果想要获取一个子文件的扩展名,则用os.path.splitext(filename), example如下:
filename = r'C:\Users\zry71\PycharmProjects\Python笔记\IO_learn.py'
f_split = os.path.splitext(filename)
print(f_split) # ('C:\\Users\\zry71\\PycharmProjects\\Python笔记\\IO_learn', '.py')
print('文件扩展名是: %s' % f_split[1]) # 文件扩展名是: .py
- datetime.fromtimestamp(timestamp) 根据给定的时间戳,返回一个datetime对象
- datetime.strftime(format) 自定义格式化字符串