python - 遍历目录
一门语言,如果知道了基本语法,知道输入输出、文件操作、数据库的操作、通信(socket等),基本上就可以开始开发了。剩下的知识就是在开发中慢慢学习与积累。这也是我学习一门新语言首先去了解的部分。现在的语言五花八门,其实归根结底也就是这些内容。
大家也可能在学习中感到迷茫,好像新的东西自己不知道怎么去用。所以,把上面这些点都能看到,就开始做自己头脑中想过的那些程序吧。
说了这么多废话,进入主题……我曾经写了C语言的遍历目录、PHP的遍历目录,今天来说一下python遍历目录,也算给大家一个对比,以及学习我上面说的:文件操作。
程序要实现的目的是遍历某个目录,并把其中的所有文件中某段内容替换掉。
import os
def replace_str(FilePath,SourceStr,ObjectStr):
file = open(FilePath,"r")
str = file.read()
str = str.replace(SourceStr,ObjectStr)
file.close()
file = open(FilePath,"w")
file.write(str)
file.close()
def getfile(path):
for file in os.listdir(path):
file = os.path.join(path,file)
if os.path.isdir(file):
getfile(file)
else:
replace_str(file,"abcd","")
rootpath = "e:\01"
getfile(rootpath)
我们要遍历目录,首先导入os模块。import os
先跳过两个函数,看到我们最下面两行。我们就是需要遍历rootpath目录,将之传入getfile函数。
getfile是个递归函数,遍历目录是一定要用递归的。运用os.listdir()获取所有的文件(包括目录和文件),获取到的是一个list,用for ..in遍历list,然后用os.path.isdir()函数判断当前的文件是否是一个目录。
如果是目录则递归执行getfile()函数,否则就进入replace_str()函数。
大概就是这个过程。代码也很简单,结合我前两篇文章,应该不难理解。主要是对比,看看三种语言完成一个任务,各自有什么优劣。
补记:
遍历目录,其实python的os模块已经给出了一个函数。
generator = os.walk(top,topdown=True,onerror=None)
它返回的对象是一个generator类型对象,我们要使用for语句来遍历它:
generator = os.walk(r"E:Pythonpro")
for i in generator:
print i
我们会发现,i 实际上是一个三元tuple,分别是此时的目录,此目录下的文件夹,此目录下的文件。所以我们上面的getfile函数可以简化如下:
def getfile(path):
generator = os.walk(path)
for (now_dir, _, file_list) in generator:
for file in file_list:
file = os.path.join(now_dir, file)
replace_str(file, "abc", "")
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- springboot2配置文件定义${user.name}内容失效问题探究
- 重学Javascript之数据类型
- JPEG/Exif/TIFF格式解读(1):JEPG图片压缩与存储原理分析
- 聊聊dubbo-go的ProviderAuthFilter
- 仅需四步,写一个springboot starter
- 重学Javascript之类型转换
- Spring Cloud 微服务(九)- 集成 Spring Boot Admin
- 聊聊dubbo-go的RPCInvocation
- 程序员是怎么记住一堆密码的?
- 腾讯大牛教你MySQL 8.0 PFS histogram解析与优化
- Python __init__.py 作用详解
- Python创建包,导入包
- Python查看模块(变量、函数、类)方法
- Python __doc__属性:查看文档
- Python __file__属性:查看模块的源文件路径