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编程中归并排序算法的实现步骤详解
May 04 Python
基础的十进制按位运算总结与在Python中的计算示例
Jun 28 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
PyCharm代码格式调整方法
May 23 Python
在PyCharm导航区中打开多个Project的关闭方法
Jan 17 Python
详解python列表生成式和列表生成式器区别
Mar 27 Python
浅谈TensorFlow中读取图像数据的三种方式
Jun 30 Python
python 决策树算法的实现
Oct 09 Python
Python实现老照片修复之上色小技巧
Oct 16 Python
Elasticsearch 批量操作
Apr 19 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 正则表达式小结
2009/08/31 PHP
解析将多维数组转换为支持curl提交的一维数组格式
2013/07/08 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
任意位置显示html菜单
2007/02/01 Javascript
javascript add event remove event
2008/04/07 Javascript
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
javascript 面向对象全新理练之继承与多态
2009/12/03 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
jQuery+ajax的资源回收处理机制分析
2017/01/07 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
vue使用nprogress实现进度条
2019/12/09 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
2020/12/03 Javascript
vue监听滚动事件的方法
2020/12/21 Vue.js
python使用线程封装的一个简单定时器类实例
2015/05/16 Python
Python实现短网址ShortUrl的Hash运算实例讲解
2015/08/10 Python
Python实现身份证号码解析
2015/09/01 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
Python自动化测试笔试面试题精选
2020/03/12 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
中职生自荐信
2013/10/13 职场文书
银行简历自我评价
2014/02/11 职场文书
《日月潭》教学反思
2014/02/28 职场文书
团结就是力量演讲稿
2014/05/21 职场文书
计划生育宣传标语
2014/06/21 职场文书
检查机关党的群众路线个人整改措施
2014/10/04 职场文书
2016年公共机构节能宣传周活动总结
2016/04/05 职场文书
Flask搭建一个API服务器的步骤
2021/05/28 Python