python文件操作之目录遍历实例分析


Posted in Python onMay 20, 2015

本文实例讲述了python文件操作之目录遍历的方法。分享给大家供大家参考。具体分析如下:

Python的os模块,包含了普遍的操作系统功能,这里主要学习与路径相关的函数:

os.listdir(dirname):列出dirname下的目录和文件
os.getcwd():获得当前工作目录
os.curdir:返回当前目录('.')
os.chdir(dirname):改变工作目录到dirname
os.path.isdir(name):判断name是不是一个目录,name不是目录就返回false
os.path.isfile(name):判断name是不是一个文件,不存在name也返回false
os.path.exists(name):判断是否存在文件或目录name
os.path.getsize(name):获得文件大小,如果name是目录返回0
os.path.abspath(name):获得绝对路径
os.path.normpath(path):规范path字符串形式
os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
os.path.splitext():分离文件名与扩展名
os.path.join(path,name):连接目录与文件名或目录
os.path.basename(path):返回文件名
os.path.dirname(path):返回文件路径

1、os.path方法

通过传入需要遍历的目录,列出目录下的所有文件并统计文件数,os提供的path模块能对目录非常灵活的操作。

import os,sys
def listdir(dir,file):
  file.write(dir + '\n')
  fielnum = 0
  list = os.listdir(dir) #列出目录下的所有文件和目录
  for line in list:
    filepath = os.path.join(dir,line)
    if os.path.isdir(filepath): #如果filepath是目录,则再列出该目录下的所有文件
      myfile.write('  ' + line + '\\'+'\n')
      for li in os.listdir(filepath):
        myfile.write('   '+li + '\n')
        fielnum = fielnum + 1
    elif os.path:  #如果filepath是文件,直接列出文件名
      myfile.write('  '+line + '\n') 
      fielnum = fielnum + 1
  myfile.write('all the file num is '+ str(fielnum))
dir = raw_input('please input the path:')
myfile = open('list.txt','w')

2、os.walk方法

os模块提供的walk方法很强大,能够把给定的目录下的所有目录和文件遍历出来。
方法:os.walk(path),遍历path,返回一个对象,他的每个部分都是一个三元组,('目录x',[目录x下的目录list],目录x下面的文件)

import os
def walk_dir(dir,fileinfo,topdown=True):
  for root, dirs, files in os.walk(dir, topdown):
    for name in files:
      print(os.path.join(name))
      fileinfo.write(os.path.join(root,name) + '\n')
    for name in dirs:
      print(os.path.join(name))
      fileinfo.write(' ' + os.path.join(root,name) + '\n')
dir = raw_input('please input the path:')
fileinfo = open('list.txt','w')
walk_dir(dir,fileinfo)

topdown决定遍历的顺序,如果topdown为True,则先列举top下的目录,然后是目录的目录,依次类推,反之,则先递归列举出最深层的子目录,然后是其兄弟目录,然后子目录。

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python判断windows系统是32位还是64位的方法
May 11 Python
python中函数默认值使用注意点详解
Jun 01 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
PyQt5组件读取参数的实例
Jun 25 Python
详解python statistics模块及函数用法
Oct 27 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
May 27 Python
keras分类之二分类实例(Cat and dog)
Jul 09 Python
python使用布隆过滤器的实现示例
Aug 20 Python
Github 使用python对copilot做些简单使用测试
Apr 14 Python
Python中使用strip()方法删除字符串中空格的教程
May 20 #Python
python字典排序实例详解
May 20 #Python
在Python中操作字符串之startswith()方法的使用
May 20 #Python
Python中splitlines()方法的使用简介
May 20 #Python
在Python中用split()方法分割字符串的使用介绍
May 20 #Python
Python编程之多态用法实例详解
May 19 #Python
Python编程之属性和方法实例详解
May 19 #Python
You might like
Linux下PHP安装mcrypt扩展模块笔记
2014/09/10 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
php实现将HTML页面转换成word并且保存的方法
2016/10/14 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
js+css在交互上的应用
2010/07/18 Javascript
分享27个jQuery 表单插件集合推荐
2011/04/25 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
angularjs使用directive实现分页组件的示例
2017/02/07 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
H5图片压缩与上传实例
2017/04/21 Javascript
Angular 表单控件示例代码
2017/06/26 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
2017/07/27 Javascript
5 种JavaScript编码规范
2018/01/30 Javascript
JavaScript学习笔记之图片库案例分析
2019/01/08 Javascript
深入探讨JavaScript的最基本部分之执行上下文
2019/02/12 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
Python采用raw_input读取输入值的方法
2014/08/18 Python
浅谈python中set使用
2016/06/30 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
2018/02/24 Python
Python代码打开本地.mp4格式文件的方法
2019/01/03 Python
python多线程使用方法实例详解
2019/12/30 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
CSS3 linear-gradient线性渐变生成加号和减号的方法
2017/11/21 HTML / CSS
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
英国巧克力贸易公司:Chocolate Trading Company
2017/03/21 全球购物
医院学雷锋活动策划方案
2014/02/15 职场文书
出生公证委托书
2014/04/03 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
2014年客服工作总结与计划
2014/12/09 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers
python高温预警数据获取实例
2022/07/23 Python