Python 获取指定文件夹下的目录和文件的实现


Posted in Python onAugust 30, 2019

经常有需要扫描目录,对文件做批量处理的需求,所以对目录处理这块做了下学习和总结。Python 中扫描目录有两种方法:os.listdir 和 os.walk。

一、os.listdir 方法

os.listdir() 方法用于返回指定的目录下包含的文件或子目录的名字的列表。这个列表以字母顺序。其得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归。 它也不包括 '.' 和 '..' 即使它在目录中。

语法格式如下:

os.listdir(path)

实例代码

def list_dir(file_dir):
  '''
    通过 listdir 得到的是仅当前路径下的文件名,不包括子目录中的文件,如果需要得到所有文件需要递归
  '''
  print'\n\n<><><><><><> listdir <><><><><><>'
  print "current dir : {0}".format(file_dir)
  dir_list = os.listdir(file_dir)
  for cur_file in dir_list:
    # 获取文件的绝对路径
    path = os.path.join(file_dir, cur_file)
    if os.path.isfile(path): # 判断是否是文件还是目录需要用绝对路径
      print "{0} : is file!".format(cur_file)
    if os.path.isdir(path):
      print "{0} : is dir!".format(cur_file)
      list_dir(path) # 递归子目录

二、os.walk 方法

os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

语法格式如下:

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

方法参数说明:

  • top:要遍历的目录的路径
  • topdown:可选,如果为 True,则优先遍历 top 目录,以及 top 目录下的每一个子目录,否则优先遍历 top 的子目录,默认为 True
  • onerror: 可选, 需要一个 callable 对象,当 walk 异常时调用
  • followlinks:可选, 如果为 True,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录,默认为 False
  • args:包含那些没有 '-' 或 '--' 的参数列表

返回值: 三元组 (root, dirs, files)

  • root :所指的是当前正在遍历的目录的地址
  • dirs :当前文件夹中所有目录名字的 list (不包括子目录)
  • files :当前文件夹中所有的文件 (不包括子目录中的文件)

实例

def work_dir(file_dir):
  print'\n\n<><><><><> work dir <><><><><>'
  for root, dirs, files in os.walk(file_dir):
    print'\n========================================'
    print "root : {0}".format(root)
    print "dirs : {0}".format(dirs)
    print "files : {0}".format(files)
​
    for file in files:
      try:
        print'-----------------------------------'
        
        file_name = os.path.splitext(file)[0]
        file_suffix = os.path.splitext(file)[1]
        file_path = os.path.join(root, file)
        file_abs_path = os.path.abspath(file)
        file_parent = os.path.dirname(file_path)
​
        print "file : {0}".format(file)
        print "file_name : {0}".format(file_name)
        print "file_suffix : {0}".format(file_suffix)
        print "file_path : {0}".format(file_path)
        print "file_abs_path : {0}".format(file_abs_path)
        print "file_parent : {0}".format(file_parent)
        
      except Exception, e:
        print "Exception", e

三、其他跟文件相关的常用方法

os.path.splitext():分离文件名和扩展名

file = "file_test.txt"
file_name = os.path.splitext(file)[0] # 输出:file_test
file_suffix = os.path.splitext(file)[1] # 输出:.txt

os.path.exists():判断文件或目录是否存在

os.path.isfile():判断是否是文件

os.path.isdir():判断是否是目录

os.path.dirname():获取当前文件所在的目录,即父目录

os.makedirs():创建多级目录

os.mkdir():创建单级目录

os.path.getsize():获取文件大小

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

Python 相关文章推荐
Python实现windows下模拟按键和鼠标点击的方法
Mar 13 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
python3实现字符串的全排列的方法(无重复字符)
Jul 07 Python
Python的垃圾回收机制详解
Aug 28 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
openstack中的rpc远程调用的方法
Jul 09 Python
Python Pandas 删除列操作
Mar 16 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 Python
基于Python实现射击小游戏的制作
Apr 06 Python
简单的Python调度器Schedule详解
Aug 30 #Python
详解在Python中以绝对路径或者相对路径导入文件的方法
Aug 30 #Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 #Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 #Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 #Python
快速解决docker-py api版本不兼容的问题
Aug 30 #Python
Python 使用 Pillow 模块给图片添加文字水印的方法
Aug 30 #Python
You might like
PHP开发框架Laravel数据库操作方法总结
2014/09/03 PHP
PHP使用正则表达式获取微博中的话题和对象名
2015/07/18 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
JavaScript高级程序设计(第三版)学习笔记6、7章
2016/03/11 Javascript
微信小程序 引入es6 promise
2017/04/12 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
详细分析JS函数去抖和节流
2017/12/05 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
详解python里使用正则表达式的分组命名方式
2017/10/24 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
2019/08/10 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
颇特女士:NET-A-PORTER(直邮中国)
2020/07/11 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
物流专业大学的自我评价
2014/01/11 职场文书
2014年高三毕业生自我评价
2014/01/11 职场文书
个人委托书怎么写
2014/04/04 职场文书
舞蹈专业求职信
2014/06/13 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
Nginx实现负载均衡的项目实践
2022/03/18 Servers
Python selenium绕过webdriver监测执行javascript
2022/04/12 Python