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入门篇之函数
Oct 20 Python
Python中的True,False条件判断实例分析
Jan 12 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
浅谈python中的实例方法、类方法和静态方法
Feb 17 Python
Python基于贪心算法解决背包问题示例
Nov 27 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
python把转列表为集合的方法
Jun 28 Python
Python代码实现http/https代理服务器的脚本
Aug 12 Python
Python importlib动态导入模块实现代码
Apr 16 Python
Python 捕获代码中所有异常的方法
Aug 03 Python
Python实现上下文管理器的方法
Aug 07 Python
python学习之使用Matplotlib画实时的动态折线图的示例代码
Feb 25 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
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
php在数组中查找指定值的方法
2015/03/17 PHP
php实现的操作excel类详解
2016/01/15 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
jquery 插件开发备注
2010/08/27 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
jQuery实现每隔几条元素增加1条线的方法
2016/06/27 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
Vuex模块化实现待办事项的状态管理
2017/03/15 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
微信小程序request请求后台接口php的实例详解
2017/09/20 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
python函数参数*args**kwargs用法实例
2013/12/04 Python
python中的reduce内建函数使用方法指南
2014/08/31 Python
详细介绍Python函数中的默认参数
2015/03/30 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
Python3运算符常见用法分析
2020/02/14 Python
巴西箱包、背包、钱包和旅行配件购物网站:Inovathi
2019/12/14 全球购物
卫校中专生的自我评价
2014/01/15 职场文书
机电专业毕业生求职信
2014/07/01 职场文书
餐饮服务食品安全责任书
2014/07/25 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
学校世界艾滋病日宣传活动总结
2015/05/05 职场文书
Java8中Stream的一些神操作
2021/11/02 Java/Android
SqlServer常用函数及时间处理小结
2023/05/08 SQL Server