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中函数传参详解
Jul 03 Python
Python3 处理JSON的实例详解
Oct 29 Python
Python排序搜索基本算法之冒泡排序实例分析
Dec 09 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python 如何提高元组的可读性
Aug 26 Python
pygame实现非图片按钮效果
Oct 29 Python
Python数组并集交集补集代码实例
Feb 18 Python
Python中如何引入第三方模块
May 27 Python
python开发入门——列表生成式
Sep 03 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 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脚本的10个技巧(3)
2006/10/09 PHP
一步一步学习PHP(3) php 函数
2010/02/15 PHP
PHP用SAX解析XML的实现代码与问题分析
2011/08/22 PHP
php实现屏蔽掉黑帽SEO的搜索关键字
2015/04/15 PHP
php 7新特性之类型申明详解
2017/06/06 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
javascript window.opener的用法分析
2010/04/07 Javascript
Jquery插件写法笔记整理
2012/09/06 Javascript
JS控件的生命周期介绍
2012/10/22 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
javascript作用域链(Scope Chain)用法实例解析
2015/11/30 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
JS验证 只能输入小数点,数字,负数的实现方法
2016/10/07 Javascript
纯javascript版日历控件
2016/11/24 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
微信小程序实现底部弹出模态框
2020/11/18 Javascript
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python的另外几种语言实现
2015/01/29 Python
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
python如何实现内容写在图片上
2018/03/23 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
门诊挂号室室长岗位职责
2013/11/27 职场文书
网上书店创业计划书
2014/01/12 职场文书
2015年小学生自我评价范文
2015/03/03 职场文书
2015年医院后勤工作总结
2015/05/20 职场文书
高中运动会前导词
2015/07/20 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
【D4DJ】美少女DJ企划 动画将于明年冬季开播第2季
2022/04/11 日漫