python中遍历文件的3个方法


Posted in Python onSeptember 02, 2014

今天写一个在windows下批量修改文件名的python脚本,用到文件的遍历。用python进行文件遍历有多种方法,这里列举并说明一下。

os.path.walk()

这是一个传统的用法。

walk(root,callable,args)方法有三个参数:要遍历的目录,回调函数,回调函数的参数(元组形式)。

调用的过程是遍历目录下的文件或目录,每遍历一个目录,调用回调函数,并把args作为参数传递给回调函数。

回调函数定义时也有三个参数,比如示例中的func中的三个参数,分别为walk传来的参数、目录的路径、目录下的文件列表(只有文件名,不是完整路径)。请看示例:

import os

s = os.sep #根据unix或win,s为\或/

root = "d:" + s + "ll" + s #要遍历的目录
def func(args,dire,fis): #回调函数的定义

    for f in fis:

        fname = os.path.splitext(f)  #分割文件名为名字和扩展名的二元组

        new = fname[0] + 'b' + fname[1]  #改名字

        os.rename(os.path.join(dire,f),os.path.join(dire,new)) #重命名
os.path.walk(root,func,()) #遍历

这种方法在使用时有个问题,不能递归遍历下一层(这点我还不确定,欢迎指正)。

python的高级版本中加入了os.walk(),比这个好用。

os.walk()

原型为:os.walk(top, topdown=True, onerror=None, followlinks=False)

我们一般只使用第一个参数。(topdown指明遍历的顺序)
该方法对于每个目录返回一个三元组,(dirpath, dirnames, filenames)。第一个是路径,第二个是路径下面的目录,第三个是路径下面的非目录(对于windows来说也就是文件)。请看示例:

import os

s = os.sep

root = "d:" + s + "ll" + s 
for rt, dirs, files in os.walk(root):

    for f in files:

        fname = os.path.splitext(f)

        new = fname[0] + 'b' + fname[1]

        os.rename(os.path.join(rt,f),os.path.join(rt,new))

这种方式可以递归遍历所有的文件。

listdir

可以使用os模块下的几个方法组合起来进行遍历。请看示例:

import os

s = os.sep

root = "d:" + s + "ll" + s
for i in os.listdir(root):

    if os.path.isfile(os.path.join(root,i)):

        print i

这里需要注意的是,其中的i是目录或文件名,不是完整的路径,在使用时要结合os.path.join()方法还原完整路径。

遍历搞定之后,文件名的修改可以使用正则表达式做一些高级的处理。

另外,还可以使用os.system(cmd)来调用shell里面的相关命令对文件进行处理,很好很强大。

Python 相关文章推荐
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
致Python初学者 Anaconda入门使用指南完整版
Apr 05 Python
Windows下Python3.6安装第三方模块的方法
Nov 22 Python
python set内置函数的具体使用
Jul 02 Python
python模拟斗地主发牌
Apr 22 Python
Pytorch转tflite方式
May 25 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
Jun 24 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
20行代码教你用python给证件照换底色的方法示例
Feb 05 Python
Python 里最强的地图绘制神器
Mar 01 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 Python
超详细Python解释器新手安装教程
May 10 Python
python中的五种异常处理机制介绍
Sep 02 #Python
python之yield表达式学习
Sep 02 #Python
python中的hashlib和base64加密模块使用实例
Sep 02 #Python
python多线程编程中的join函数使用心得
Sep 02 #Python
python中的函数用法入门教程
Sep 02 #Python
python爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 #Python
python爬虫入门教程之糗百图片爬虫代码分享
Sep 02 #Python
You might like
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
2012/02/04 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
php缓冲输出实例分析
2015/01/05 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
详解php用curl调用接口方法,get和post两种方式
2017/01/13 PHP
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
页面定时刷新(1秒刷新一次)
2013/11/22 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
2014/06/20 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
详解js的六大数据类型
2016/12/27 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
JS运动特效之链式运动分析
2018/01/24 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
python正则分组的应用
2013/11/10 Python
python实现网页链接提取的方法分享
2014/02/25 Python
python文件操作的简单方法总结
2019/11/07 Python
Python将列表中的元素转化为数字并排序的示例
2019/12/25 Python
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
阿迪达斯墨西哥官方网站:adidas墨西哥
2017/11/03 全球购物
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
数控专业毕业生求职信
2014/06/12 职场文书
文明城市创建标语
2014/06/16 职场文书
人事行政经理岗位职责
2014/06/18 职场文书
赔偿协议书范本
2014/09/12 职场文书
环卫工作汇报材料
2014/10/28 职场文书
社区国庆节活动总结
2015/03/23 职场文书
就业证明函
2015/06/17 职场文书
采购部年度工作总结
2015/08/13 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
Pytorch DataLoader shuffle验证方式
2021/06/02 Python