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魔法方法-自定义序列详解
Jul 21 Python
python 统计代码行数简单实例
May 04 Python
python 实现对文件夹内的文件排序编号
Apr 12 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
python匹配两个短语之间的字符实例
Dec 25 Python
python实现电子产品商店
Feb 26 Python
Python time库基本使用方法分析
Dec 13 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
python如何利用Mitmproxy抓包
Oct 10 Python
Django项目在pycharm新建的步骤方法
Mar 02 Python
Matplotlib绘制条形图的方法你知道吗
Mar 21 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中解析带中文字符的url函数分享
2015/01/20 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
[原创]PHP正则删除html代码中a标签并保留标签内容的方法
2017/05/23 PHP
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
JS数字千分位格式化实现方法总结
2016/12/16 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
解决Layui当中的导航条动态添加后渲染失败的问题
2019/09/25 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
[42:11]TNC vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
Python基础篇之初识Python必看攻略
2016/06/23 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
详解Python3的TFTP文件传输
2018/06/26 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
Pandas之DataFrame对象的列和索引之间的转化
2019/06/25 Python
简单了解python变量的作用域
2019/07/30 Python
Python hashlib模块实例使用详解
2019/12/24 Python
python 一维二维插值实例
2020/04/22 Python
《口技》教学反思
2014/02/21 职场文书
ktv好的活动方案
2014/08/15 职场文书
课程设计的心得体会
2014/09/03 职场文书
焦裕禄观后感
2015/06/03 职场文书