时间:2021-05-22
今天写一个在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里面的相关命令对文件进行处理,很好很强大。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
有如下的xml文件:复制代码代码如下:12下面介绍python解析xml文件的几种方法,使用python模块实现。方式1,python模块实现自动遍历所有节点:
本文研究的主要是python删除过期log文件的相关内容,具体介绍如下。1.用Python遍历目录os.walk方法可以很方便的得到目录下的所有文件,会返回一个
本文实例讲述了python通过索引遍历列表的方法。分享给大家供大家参考。具体如下:python中我们可以通过for循环来遍历列表:colours=["red",
关于Python的文件遍历,大概有两种方法,一种是较为便利的os.walk(),还有一种是利用os.listdir()递归遍历。方法一:利用os.walkos.
这是一个使用Python生成文件、目录树的程序,其中遇到一个问题是:如何确定某个目录下的某一文件是最后一个遍历的文件。因为最后一个遍历的文件前应添加"└─",非