练习1:

  利用os模块编写一个能实现dir -l输出的程序(注意:dir /l是windows下命令)

#!_*_coding:utf-8_*_
# Author: hkey
import os, time
base_dir = input('enter your dir:') # 手动输入绝对目录
class file_total(object):
'''获取文件及目录属性'''
def __init__(self, path):
self.__path = path
def file_sum(self):
'''统计文件及目录总数'''
for root, dirs, files in os.walk(self.__path, topdown=False):
f_sum = 0
d_sum = 0
for name in files:
f_sum += 1
for name in dirs:
d_sum += 1
return f_sum, d_sum
def file_stat(self):
'''获取具体文件及目录属性'''
for f in os.listdir(self.__path):
dir = os.path.join(self.__path, f)
# print(f)
os_stat = os.stat(dir)
# 日期(年/月/日)
file_date = time.strftime('%Y/%m/%d', time.localtime(os_stat.st_mtime))
# 时间(时分秒)
file_time = time.strftime('%H:%M', time.localtime(os_stat.st_mtime))
# 文件及目录大小
file_size = os_stat.st_size
# 文件名
file_name = f+'\t'
if os.path.isfile(dir):
file_stat = '<file>'
elif os.path.isdir(dir):
file_stat = '<dir>\t'
print(file_date,'\t',file_time,'\t',file_stat,'\t',file_size,'\t',file_name) f = file_total(base_dir)
f_stat = f.file_sum()
print(f.file_stat())
print('\t %s 个文件\n\t %s 个目录' % (f_stat[0], f_stat[1]))

  练习1主要使用到了os模块,os.walk方法很好用。

练习2:

  编写一个程序,能在当前目录以及当前目录的所有子目录下查找文件名包含指定字符串的文件,并打印出相对路径。

#!_*_coding:utf-8_*_
# Author: hkey
import os, re
file_list = list()
# base_dir = input('enter your dir:')
find_str = input('enter your file str:')
for root, dirs, files in os.walk('.', topdown=False):
for name in files:
if re.search(find_str, name):
print(os.path.join(root, name))

  练习2主要使用到re正则匹配,str类型通过find和index都无法实现判断。

最新文章

  1. 用单例模式封装常用方法 utils class v1.0
  2. 20.python笔记之装饰器
  3. 在client类中设置访问属性 address,business和individua
  4. eclipse 提交作业到JobTracker Hadoop的数据类型要求必须实现Writable接口
  5. OpenCV CommandLineParser 的用法
  6. struts2-2.3.4.1的struts-default.xml源码
  7. 剑指OFFER之丑数(九度OJ1214)
  8. Jquery OR Js 实现图片预览
  9. 模板方法模式(TemplateMethod)
  10. List去重
  11. Struts2 02--通配符
  12. Unity3d Mecanim动画系统Animator学习笔记
  13. Unable to execute &#39;doFinal&#39; with cipher instance [javax.crypto.Cipher@4e025e0a]
  14. Mysql索引使用解析
  15. 异步、非阻塞和IO多路复用总结
  16. 找到 Confluence 6 的日志和配置文件
  17. 2.3.7synchronized代码块有volatile同步的功能
  18. 2018年12月7日 字符串格式化2 format与函数1
  19. response和request的setCharacterEncoding区别
  20. Oracle 10g AND Oracle 11g手工建库案例--Oracle 10g

热门文章

  1. [leetcode-609-Find Duplicate File in System]
  2. 图书 Framework 设计指南: 可重用 .NET 库的约定、惯用法和模式 引出资料
  3. python practive
  4. Currying &amp; 柯里化
  5. SQLAlchemy技术文档(中文版)(上)
  6. 什么是Redis的事务
  7. Angular 监听路由变化
  8. Vim使用小记(二)插件管理
  9. 如何使用Navicat备份数据库脚本
  10. jrebel插件激活