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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
Jan 20 Python
Python selenium实现微博自动登录的示例代码
May 16 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
利用python list完成最简单的DB连接池方法
Aug 09 Python
python机器学习实现决策树
Nov 11 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
pytorch的batch normalize使用详解
Jan 15 Python
python:目标检测模型预测准确度计算方式(基于IoU)
Jan 18 Python
python shell命令行中import多层目录下的模块操作
Mar 09 Python
用基于python的appium爬取b站直播消费记录
Apr 17 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
Syphon 秘笈
2021/03/03 冲泡冲煮
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
tp5(thinkPHP5)框架数据库Db增删改查常见操作总结
2019/01/10 PHP
PHP实现给定一列字符,生成指定长度的所有可能组合示例
2019/06/22 PHP
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
Extjs中的GridPanel隐藏列会显示在menuDisabled中解决方法
2013/01/27 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
AngularJS中的模块详解
2015/01/29 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
javascript中setAttribute()函数使用方法及兼容性
2015/07/19 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
Element Dropdown下拉菜单的使用方法
2020/07/26 Javascript
小程序组件传值和引入sass的方法(使用vant Weapp组件库)
2020/11/24 Javascript
python和pyqt实现360的CLable控件
2014/02/21 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
浅析python参数的知识点
2018/12/10 Python
如何在django里上传csv文件并进行入库处理的方法
2019/01/02 Python
python如何给字典的键对应的值为字典项的字典赋值
2019/07/05 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
python实现从ftp服务器下载文件
2020/03/03 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
美国祛痘、抗衰老药妆品牌:Murad
2016/08/27 全球购物
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
TUMI新加坡官网:国际领先的商旅箱包品牌
2019/01/12 全球购物
法学专业毕业生求职信
2014/06/12 职场文书
公司行政管理制度范本
2015/08/05 职场文书