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 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
python写xml文件的操作实例
Oct 05 Python
Python的Urllib库的基本使用教程
Apr 30 Python
Django自定义分页与bootstrap分页结合
Feb 22 Python
Python 对象中的数据类型
May 13 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
python实现守护进程、守护线程、守护非守护并行
May 05 Python
python tornado微信开发入门代码
Aug 24 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
Dec 10 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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
Smarty模板快速入门
2007/01/04 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
php json转换相关知识(小结)
2018/12/21 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
关于捕获用户何时点击window.onbeforeunload的取消事件
2011/03/06 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
基于JavaScript实现Json数据根据某个字段进行排序
2015/11/24 Javascript
Bootstrap创建可折叠的组件
2016/02/23 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
vue.js指令v-model实现方法
2016/12/05 Javascript
微信小程序开发探究
2016/12/27 Javascript
Angular.js自动化测试之protractor详解
2017/07/07 Javascript
angular4自定义组件详解
2017/09/28 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
零基础写python爬虫之urllib2中的两个重要概念:Openers和Handlers
2014/11/05 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python技能之数据导出excel的实例代码
2017/08/11 Python
python中实现指定时间调用函数示例代码
2017/09/08 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
农贸批发市场管理制度
2015/08/07 职场文书
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL