python 遍历目录或文件

如果想得到某个目录下面的所有文件名,用 python 怎么做?

先看代码:

import os,sysdef explore(dir):for root, dirs, files in os.walk(dir):print('debug: ', root, dirs, files) # 这行用来调试,帮助理解代码    for file in files:path = os.path.join(root, file)print(path)def main():for path in sys.argv[1:]:           if os.path.isdir(path):explore(path)if __name__ == "__main__":main()

假设上面的代码保存为文件 get_dirs.py

我们实操一下。

当前目录结构如下:

$ tree
.
├── a
│   └── a1
│       └── a11
├── a.txt
├── b
├── b.txt
├── c.txt
├── get_dirs.py
└── ss└── s.txt

结果是:

$ python3 get_dirs.py ./
debug:  ./ ['a', 'b', 'ss'] ['a.txt', 'b.txt', 'c.txt', 'get_dirs.py']
./a.txt
./b.txt
./c.txt
./get_dirs.py
debug:  ./a ['a1'] []
debug:  ./a/a1 ['a11'] []
debug:  ./a/a1/a11 [] []
debug:  ./b [] []
debug:  ./ss [] ['s.txt']
./ss/s.txt

代码解读如下。

    for root, dirs, files in os.walk(dir):print('debug: ', root, dirs, files) # 这行用来调试,帮助理解代码    for file in files:path = os.path.join(root, file)print(path)

第 1 行的 os.walk 的函数声明为:

walk(top, topdown=True, onerror=None, followlinks=False)

参数:

  • top 是你所要便利的目录的地址
  • topdown 为真,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为真)
  • onerror 需要一个 callable 对象,当 walk 需要异常时,会调用
  • followlinks 如果为真,则会遍历目录下的快捷方式(linux 下是 symbolic link)实际所指的目录(默认为假)

os.walk 的返回值是一个生成器(generator),也就是说我们需要不断地遍历它,以获得所有内容。

可以理解为 os.walk 会遍历所有的目录(不包括文件),每次遍历都会返回一个三元组:(root,dirs,files)。

  • root 表示当前正在遍历的目录
  • dirs 是一个 list ,会列出 root 下所有的目录(不包括子目录)
  • files 也是一个 list , 会列出 root 下所有的文件(不包括子目录里的文件)

知道了这些,你再对比上面的打印结果就会豁然开朗。

代码第 4 行,path = os.path.join(root, file)

这句是什么意思呢?其实就是把 root 和 file 拼接到一起,组成完整的文件名。

举个例子就明白了。

>>> import os
>>> os.getcwd()
'/mnt/hgfs/vm_share/grep_test'
>>> my_path = os.path.join(os.getcwd(), "hello")
>>> print(my_path)
/mnt/hgfs/vm_share/grep_test/hello

参考资料

【1】python中os.walk的用法

【2】os.path.join()用法

python 遍历目录或文件相关推荐

  1. 详细讲解Python遍历目录的文件夹(dir)、文件(file)的三种方法:os.listdir、os.walk和os.scandir

    在使用Python开发项目的时候,会遇到需要遍历文件夹.文件的需求,我整理了三种主流方法:os.listdir.os.walk和os.scandir,并进行了详细的讲解. 用于实验的目录: .test ...

  2. python遍历目录压缩文件夹然后在发送邮件_python目录操作之python遍历文件夹后将结果存储为xml...

    Linux服务器有CentOS.Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在 ...

  3. python遍历目录压缩文件夹_Python实现多级目录压缩与解压文件的方法

    本文实例讲述了Python实现多级目录压缩与解压文件的方法.分享给大家供大家参考,具体如下: 咱向来就是拿来主意,也发个东西供同行"拿来"使用吧 咱信奉的就是少量的代码完成大量的工 ...

  4. python遍历子目录_用python遍历目录下文件(包括子目录) | 求索阁

    #coding=gbk """ 实现服务器资源data文本文件加密 """ __author__ = 'lc' import os impo ...

  5. Python遍历目录下的文件(os.walk 、os.listdir的用法)

    Python遍历目录下的文件(os.walk .os.listdir的用法) 最近想从一个目录转移一些文件到另外一个目录,因为文件有指定的后缀,所以想着用python来转移,不做cv工程师,那就涉及到 ...

  6. Python监控目录和文件变化

    原文:https://www.cnblogs.com/lcamry/p/8392376.html Python监控目录和文件变化 一.os.listdir import os, time path_t ...

  7. python扫描目录下文件_Python扫描目录读取文件,不考虑子目录

    这篇文章主要为大家详细介绍了Python扫描目录读取文件,不考虑子目录,具有一定的参考价值,可以用来参考一下. 感兴趣Python扫描目录读取文件,不考虑子目录的小伙伴,下面一起跟随512笔记的小编罗 ...

  8. python 判断目录和文件是否存在,若不存在即创建

    python 判断目录和文件是否存在,若不存在即创建 import os dirs = './11'if not os.path.exists(dirs):os.makedirs(dirs)

  9. python 递归遍历目录排序_python下递归遍历目录和文件

    方法一:递归调用: import os def dirlist(path, allfile): filelist =  os.listdir(path) for filename in filelis ...

最新文章

  1. 开启ntp服务_Linux入门:Linux自有服务及软件包
  2. opengl学习笔记(三)
  3. element ui 弹出组件的遮罩层在弹出层的上面的解决方法
  4. maven pom 文件的 scope,scope=system 时打包打不进
  5. 08、ADS使用记录之低通滤波器设计与优化
  6. 08-微信小程序商城 销售排行(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
  7. MySQL学习(一)脏读、不可重复读、幻读(鸣人和佐助上学的故事)
  8. 酒仙网IPO被终止:曾拟募资10亿 红杉与东方富海是股东
  9. 抖音胡闹天宫直播项目,可虚拟人直播 抖音报白 实时互动直播软
  10. 任务教学法在计算机教学,“任务驱动”教学法在计算机基础教学中的应用
  11. 查询大全,肯定有你需要的!
  12. 单例模式(Singleton) 1
  13. 【超简单】latex 参考文献 引用 跳转 多余的空格
  14. 如何使用CC攻击中小型网站?
  15. form表单的submit()和onsubmit()的区别
  16. 奥林匹克计算机竞赛保送,奥数再见!清北保送生为什么都选信息学奥赛
  17. 16大免费网络营销的方式
  18. 3D Tiles 简单介绍
  19. magento 2 引用 css,Magento 2无法加载CSS和JavaScript
  20. 12代酷睿安装18.04ubuntu无法识别硬盘

热门文章

  1. 如何安装Windows10+CentOS7双系统_自用成功版——注意看评论的注意事项
  2. sqlserver ssms ctrl+e快捷键问题
  3. 使用Apache php 的一些基本操作(一)
  4. 奔跑吧,OpenStack现场分享:超融合架构如何抹平物理硬件差异?
  5. [Java,MVC] Eclipse下搭建Spring MVC
  6. who whoami who am i的区别
  7. numpy版本不对应导致tensorflow出错
  8. 吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现
  9. 机器学习中的MLE、MAP和贝叶斯估计
  10. C语言1e12怎么识别,求大神帮助词法分析,当输入第一个1.2e12时可以输出,当时输入第二个1.2e12时就不能输出了,万分感谢,还有不能识别x=7*8+9中的+9,...