Python遍历某目录下的所有文件夹与文件路径


Posted in Python onMarch 15, 2018

本文与《【Java】读取其下所有文件夹与文件的路径》 (点击打开链接)为姊妹篇,主要讲述Python对于文件信息的读取操作。

Python对于文件信息的读取操作,在其固有类os中。

下面以读取F盘下的所有文件夹作为例子说明这个问题:

Python遍历某目录下的所有文件夹与文件路径

Python对于文件夹的遍历有两种写法,一种是直接利用其封装好的walk方法直接操作。
这是Python做得比Java优势的地方:

# -*-coding:utf-8-*- 
import os 
for root,dirs,files in os.walk("f:\\"): 
 for dir in dirs: 
  print os.path.join(root,dir).decode('gbk').encode('utf-8'); 
 for file in files: 
  print os.path.join(root,file).decode('gbk').encode('utf-8');

运行效果如下:

Python遍历某目录下的所有文件夹与文件路径

上述程序,将os.walk读取到的所有路径root、目录名dirs与文件名files,也就是三个文件数组利用foreach循环输出。

join方法就是讲其路径与目录名或者文件名连接起来,组成一个完整的目录。

后面的.decode('gbk').encode('utf-8');方法主要是给Eclipse下的PyDev控制台用的,如果不加控制台的输出会出现乱码,但是,如果你的Python程序是要拉到Windows的控制台cmd,使用python xx.py运行的话,请不要加这段编码方法,同时去掉开头的# -*-coding:utf-8-*-。因为cmd是使用gb2312简体中文编码的,而不是像Linux的终端是utf-8编码。

也可以根据Java的递归思想,写成以下的形式:

# -*-coding:utf-8-*- 
 
import os; 
files = list(); 
def DirAll(pathName): 
 if os.path.exists(pathName): 
  fileList = os.listdir(pathName); 
  for f in fileList: 
   if f=="$RECYCLE.BIN" or f=="System Volume Information": 
    continue; 
   f=os.path.join(pathName,f); 
   if os.path.isdir(f):  
    DirAll(f);     
   else: 
    dirName=os.path.dirname(f); 
    baseName=os.path.basename(f); 
    if dirName.endswith(os.sep): 
     files.append(dirName+baseName); 
    else: 
     files.append(dirName+os.sep+baseName); 
 
 
DirAll("f:\\"); 
for f in files: 
 print f.decode('gbk').encode('utf-8');

运行效果如下:

Python遍历某目录下的所有文件夹与文件路径

当然,这种形式有其弊端,就是不能遍历一些系统保留文件夹,如$RECYCLE.BIN、System Volume Information等,如果不写判断条件,会导致下面的读取出错。因此,以后遍历文件夹的时候,还是建议时候上面的os.walk的方式。

不过,我们可以从上面的程序看到几个常见的用法,os.sep能够直接返回文件分隔符/或者\\、、os.path.join(文件所在目录的路径、文件名)能把文件所在目录的路径与文件名连接起来,os.path.isdir(完整路径)能判断是否是目录,endswith("xx")方法能判断字符串是否以xx结束的。os.path.dirname()能得到文件所在目录的路径,os.path.basename()能得到文件名,os.listdir(路径)能得到相应的文件列表,等等。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python sys模块sys.path使用方法示例
Dec 04 Python
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python中输出ASCII大文字、艺术字、字符字小技巧
Apr 28 Python
Python列表和元组的定义与使用操作示例
Jul 26 Python
Python输出带颜色的字符串实例
Oct 10 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
Python跳出多重循环的方法示例
Jul 03 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
Python如何应用cx_Oracle获取oracle中的clob字段问题
Aug 27 Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 Python
关于pytorch处理类别不平衡的问题
Dec 31 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
Mar 15 #Python
ubuntu安装sublime3并配置python3环境的方法
Mar 15 #Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 #Python
python实现word 2007文档转换为pdf文件
Mar 15 #Python
python中使用PIL制作并验证图片验证码
Mar 15 #Python
Python读取Word(.docx)正文信息的方法
Mar 15 #Python
30秒轻松实现TensorFlow物体检测
Mar 14 #Python
You might like
PHP中include与require使用方法区别详解
2013/10/19 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
PHP常用的小程序代码段
2015/11/14 PHP
PHP读取Excel类文件
2017/05/15 PHP
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
Js获取当前日期时间及格式化代码
2016/09/17 Javascript
Javascript中常用的检测方法小结
2016/10/08 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
vue实现组件之间传值功能示例
2018/07/13 Javascript
vue构建动态表单的方法示例
2018/09/22 Javascript
关于layui toolbar和template的结合使用方法
2019/09/19 Javascript
原生javascript制作贪吃蛇小游戏的方法分析
2020/02/26 Javascript
vue项目中使用bpmn-自定义platter的示例代码
2020/05/11 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
2020/11/05 Javascript
[02:08]什么藏在DOTA2 TI9“小紫本”里?斧王历险记告诉你!
2019/05/17 DOTA
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
Python科学计算之Pandas详解
2017/01/15 Python
CentOS中升级Python版本的方法详解
2017/07/10 Python
简单实现python收发邮件功能
2018/01/05 Python
Python爬虫PyQuery库基本用法入门教程
2018/08/04 Python
介绍一款python类型检查工具pyright(推荐)
2019/07/03 Python
Python 绘制酷炫的三维图步骤详解
2019/07/12 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
tensorflow自定义激活函数实例
2020/02/04 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
Canvas获取视频第一帧缩略图的实现
2020/11/11 HTML / CSS
在什么时候需要使用"常引用"
2015/12/31 面试题
介绍一下Ruby的多线程处理
2013/02/01 面试题
教育学专业实习生的自我鉴定
2013/11/26 职场文书
产品设计开发计划书
2014/05/07 职场文书
小学安全工作总结2015
2015/05/18 职场文书