python os.walk详解
os.walk
os.walk方法,主要用来遍历一个目录内各个子目录和子文件。
os.walk(top, topdown=True, onerror=None, followlinks=False)
可以得到一个三元tupple(dirpath, dirnames, filenames),
第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。
dirpath 是一个string,代表目录的路径,
dirnames 是一个list,包含了dirpath下所有子目录的名字。
filenames 是一个list,包含了非目录文件的名字。
这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name).
通过for循环自动完成递归枚举
目录是这样的文件目录结构:
[root@xiaoma mcw]# tree
.
├── cur1.txt
├── cur2.txt
├── mcw
│ ├── m1.txt
│ └── m2.txt
├── test.py
└── xiaoma
├── x1.txt
└── x2.txt directories, files
(1)
import os
result = os.walk("./")
print(result)
------------------结果:
[root@xiaoma mcw]# python test.py
<generator object walk at 0x7f0e90ad17d0>
(2)os.walk是很多个元组
import os
result = os.walk("./")
print(result)
for i in result:
print(i) #i代表每个目录以及目录下的文件名字。
---------------结果;
[root@xiaoma mcw]# python test.py
('./', ['xiaoma', 'mcw'], ['test.py', 'cur2.txt', 'cur1.txt']) #当前目录 当前目录下的目录,当前目录下的文件
('./xiaoma', [], ['x1.txt', 'x2.txt']) 子目录以及子目录写的文件
('./mcw', [], ['m2.txt', 'm1.txt'])
#代码解析:os.walk("./") 的第一个元组的第一个元素是指定目录的名字,第二个元素当前目录下的子目录,第三个元素是当前目录下的文件列表。
第二个元组的第一个元素便是子目录的名字字符串;第二个元素就是子目录的子目录,如果没有就是空列表;第三个元素就是这个子目录下的文件列表。
第三个元组是当前目录下的另一个子目录。第一个元素是子目录的名称字符串;第二个元素是子目录的子目录。第三个元素是这个子目录下的文件列表。
(3)a,正在查询的./目录下的单层目录
import os
result = os.walk("./")
for a,b,c in result:
print(a) #a所有目录
------------------结果:
[root@xiaoma mcw]# python test.py
./
./xiaoma
./mcw
4)b表示这个目录下的各个子目录列表,子目录没有子目录就显示为空列表
import os
result = os.walk("./")
for a,b,c in result:
print(b)
--------------结果:
[root@xiaoma mcw]# python test.py
['xiaoma', 'mcw'] #查询的目录./下的子目录
[] #xiaoma目录下的子目录
[] #mcw目录下的子目录
5)#c,表示各个目录下的文件列表
import os
result = os.walk("./")
for a,b,c in result:
print(c) #c,各个目录文件列表
----------------结果:
[root@xiaoma mcw]# python test.py
['test.py', 'cur2.txt', 'cur1.txt']
['x1.txt', 'x2.txt']
['m2.txt', 'm1.txt']
6)遍历这个目录下所有文件,包括子目录的文件
import os
result = os.walk("./")
for a,b,c in result:
# a,正在查看的目录 b,此目录下的文件夹 c,此目录下的文件
for item in c:
path = os.path.join(a,item) #
print(path)
-----------------结果:
[root@xiaoma mcw]# python test.py
./test.py
./cur2.txt
./cur1.txt
./xiaoma/x1.txt
./xiaoma/x2.txt
./mcw/m2.txt
./mcw/m1.txt
7)有三级以上的目录
('./', ['xiaoma', 'mcw'], ['test.py', 'cur2.txt', 'cur1.txt'])
('./xiaoma', [], ['x1.txt', 'x2.txt'])
('./mcw', ['haizi'], ['m2.txt', 'm1.txt'])
('./mcw/haizi', [], [])
参考:
1)https://www.cnblogs.com/JetpropelledSnake/p/8982495.html
python os.walk详解的更多相关文章
- os.walk详解
https://www.jianshu.com/p/bbad16822eab python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1.载入 要使 ...
- python os模块详解
一.Python os模块(Linux环境) 1.1 执行shell命令 os.system('cmd') 执行命令不保存结果 os.popen('command') 执行后返回结果,使用.read( ...
- python os用法详解
前言:在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块,所以今天整理下比 ...
- python os 模块详解
os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcwd:得 ...
- python之OS模块详解
python之OS模块详解 ^_^,步入第二个模块世界----->OS 常见函数列表 os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows ...
- python之struct详解
python之struct详解 2018-05-23 18:20:29 醉小义 阅读数 20115更多 分类专栏: python 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. ...
- python time模块详解
python time模块详解 转自:http://blog.csdn.net/kiki113/article/details/4033017 python 的内嵌time模板翻译及说明 一.简介 ...
- OS.ENVIRON()详解
OS.ENVIRON()详解
随机推荐
- ethers.js-4-Contracts
Contracts A Contract is an abstraction of an executable program on the Ethereum Blockchain. A Contra ...
- c++ 浅拷贝和深拷贝 指针和引用的区别 malloc(free)和new(delete)的区别 重载重写重定义
4.malloc(free)和new(delete)的区别 malloc()函数: 1.1 malloc的全称是memory allocation,中文叫动态内存分配. 原型:extern void ...
- Kafka设计解析(十一)Kafka无消息丢失配置
转载自 huxihx,原文链接 Kafka无消息丢失配置 目录 一.Producer端二.Consumer端 Kafka到底会不会丢数据(data loss)? 通常不会,但有些情况下的确有可能会发生 ...
- 【gulp】Gulp的安装和配置 及 系列插件
注意:要安装俩次gulp(全局和本地):全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能. 之前由大牛帮忙配置的gulp来用.今天时间充裕,就和小伙伴一起动手配置 ...
- RHEL 7.6 安装 Oracle 18c RAC
RHEL 7.6 安装 Oracle 18c RAC 第一部分 安装规划 虚拟环境 VirtualBox 6.0 OS 版本 Red Hat Enterprise Linux Server relea ...
- oracle 数据库更新 新增 修改 删除
数据增加 INSERT INTO 表名称 [(字段,字段,...)] VALUES (值,值,...) ; 考虑到日后代码的可维护性,一定要使用完整的语法进行数据的增加. 数据修改 UPDATE 表名 ...
- redis持久化机制之AOF与RDB
什么是redis Redis是一种面向“key-value”类型数据的分布式NoSQL数据库系统,具有高性能.持久存储.适应高并发应用场景等优势.它虽然起步较晚,但发展却十分迅速. redis为何需要 ...
- PHP中上传文件打印错误,错误类型
一般使用$_FILES来进行文件上传时,可以使用$_FILES["file"]["error"]来判断文件上传是否出错.$_FILES["file&q ...
- hadoop体系架构
1.1 Hadoop 概念:hadoop是一个由Apache基金会所开发的分布式系统基础架构.是根据google发表的GFS(Google File System)论文产生过来的. ...
- 【转】Netty 拆包粘包和服务启动流程分析
原文:https://www.cnblogs.com/itdragon/archive/2018/01/29/8365694.html Netty 拆包粘包和服务启动流程分析 通过本章学习,笔者希望你 ...