1.利用os模块编写一个能实现dir -l输出的程序。
储备知识:
os模块:
- os.listdir(path) 列出了path路径下的所有文件和目录
os.path.isfile(name) 判定name文件存不存在
os.path.isdir(name)判定name是不是一个目录
os.path.getsize(name) 获得name文件的大小
os.path.getmtime(name) 获得name文件最后修改的时间(时间戳)
time模块:
- time模块中时间表现的格式主要有三种:
a、timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量
b、struct_time时间元组,共有九个元素组,将年,月,日,小时,分钟,秒,一周第几日,一年第几日,夏令时等变量组合在一起。
c、format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
代码:
import os,time
path = r'C:\Users\dell\work'
filenum,filesize,dirnum = 0,0,0
for name in os.listdir(path):
#listdir(dir)返回dir路径下所有的文件和目录
if os.path.isfile(name):
print('%s\t\t%d\t%s'%(time.strftime('%Y/%m/%d%H:%M',time.localtime(os.path.getmtime(name))),os.path.getsize(name),name))
#\t是制表符 使得对齐,一个\t,8个位置
#os.path.getmtime(name) 获得name文件的最后修改的时间(时间戳)
#time.localtime() 将Timestamp对象转换为struct_time对象
#strftime()将struct_time对象转换为格式化时间 2009/01/07 23:54
filenum= filenum+1
filesize += os.path.getsize(name)
if os.path.isdir(name):
print('%s\t<DIR>\t\t%s'%(time.strftime('%Y/%m/%d %H:%M',time.localtime(os.path.getmtime(name))),name))
dirnum+=1
print('\t\t%d个文件\t\t%d个字节'%(filenum,filesize))
print('\t\t%d个目录'%dirnum)
2.编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。
import os
def search(text,path ='.'):
for name in os.listdir():
current = os.path.join(path,name)#递归得以实现的关键
if os.path.isdir(name):
search(text,current)
elif name.find(text)!= -1:
print(current)
if __name__ == '__main__':
text = input('Please input')
search(text)