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进阶教程之词典、字典、dict
Aug 29 Python
用Python实现服务器中只重载被修改的进程的方法
Apr 30 Python
Python的装饰器使用详解
Jun 26 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
Python pandas自定义函数的使用方法示例
Nov 20 Python
Python视频编辑库MoviePy的使用
Apr 01 Python
使用pytorch实现论文中的unet网络
Jun 24 Python
Python编写单元测试代码实例
Sep 10 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
Python之Matplotlib绘制热力图和面积图
Apr 13 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数据缓存技术
2007/02/14 PHP
php适配器模式简单应用示例
2019/10/23 PHP
JS解决url传值出现中文乱码的另类办法
2013/04/08 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
javascript实现获取字符串hash值
2015/05/10 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
常用jQuery代码分享
2015/07/14 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
js中遍历Map对象的简单实例
2016/08/08 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
2016/10/11 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
详解tween.js的使用教程
2017/09/14 Javascript
Vue集成Iframe页面的方法示例
2017/12/12 Javascript
Node.js实现注册邮箱激活功能的方法示例
2018/03/23 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
[36:19]2018DOTA2亚洲邀请赛 小组赛 A组加赛 Newbee vs LGD
2018/04/03 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
python 基于selectors库实现文件上传与下载
2020/12/31 Python
HTML5 Canvas 破碎重组的视频特效的示例代码
2019/09/24 HTML / CSS
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
在校生自我鉴定
2014/01/23 职场文书
工程建设实施方案
2014/03/14 职场文书
晋江市人民政府党组群众路线教育实践活动整改方案
2014/10/25 职场文书
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏