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 25 Python
初步认识Python中的列表与位运算符
Oct 12 Python
Python简单实现enum功能的方法
Apr 25 Python
python非递归全排列实现方法
Apr 10 Python
Python对列表中的各项进行关联详解
Aug 15 Python
python实现简单点对点(p2p)聊天
Sep 13 Python
一条命令解决mac版本python IDLE不能输入中文问题
May 15 Python
python截取两个单词之间的内容方法
Dec 25 Python
python 字典的打印实现
Sep 26 Python
pycharm设置默认的UTF-8编码模式的方法详解
Jun 01 Python
python图片灰度化处理的几种方法
Jun 23 Python
pandas数值排序的实现实例
Jul 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一些常用的正则表达式字符的一些转换
2008/07/29 PHP
php 获取百度的热词数据的代码
2012/02/18 PHP
php启动时候提示PHP startup的解决方法
2013/05/07 PHP
解析php中array_merge与array+array的区别
2013/06/21 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
FF IE兼容性的修改小结
2009/09/02 Javascript
js列举css中所有图标的实现代码
2011/07/04 Javascript
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
前端js弹出框组件使用方法
2020/08/24 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
JS实现数组的增删改查操作示例
2018/08/29 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
python获得图片base64编码示例
2014/01/16 Python
对tensorflow 中tile函数的使用详解
2020/02/07 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
html5 button autofocus 属性介绍及应用
2013/01/04 HTML / CSS
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
阿姆斯特丹城市卡:Amsterdam Pass
2019/12/01 全球购物
中国京东和泰国中央集团合资的网站:JD CENTRAL
2020/08/22 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
关于中国梦的演讲稿
2014/04/23 职场文书
党员干部批评与自我批评反四风思想汇报
2014/09/21 职场文书
2015选调生工作总结
2015/07/24 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers
关于JavaScript轮播图的实现
2021/11/20 Javascript
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏
Django框架中模型的用法
2022/06/10 Python
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript