先来了解下几个模块:
os.walk()是一个简单易用的文件,目录遍历器
语法格式:os.walk(filepath,topdown=True,onerror=None,followlinks=False)
filepath:需要遍历的文件目录地址,返回一个元组,元组的内容有三个部分:
遍历的目录地址
当遍历的目录地址下包含有其他文件夹时,所有的文件夹名生成一个列表进行返回,如果没有文件夹则返回空列表
将遍历目录下的所有文件的文件名生成一个列表返回
可选参数:
topdown:遍历优先级设置,可选,默认为 True。为True时优先遍历top目录,为False时优先遍历 top的子目录。
onerror:异常信息,当walk异常时,会调用。
followlinks:默认关闭,未看到明显变化。
os.path.join(filepath,filename):将目录和文件名合并为一个路径
os.path.splitext(path):返回文件路径或文件名和文件的扩展名
实例1:以列表形式返回目录下的文件及子文件夹下的文件
import os
for (root,dirs,files) in os.walk("E:/pythonwork/userxinzhiliao/yanzheng"):
print(files)
返回两行内容:
第一行为yanzheng文件夹中的文件
第二行为yanzheng文件夹下log文件夹中的文件
实例2:获取指定目录的文件的名称,按条件修改名称并复制到新的目录
import os
for (root,dirs,files) in os.walk("E:\old"):
i=1 #新文件名中包含的序号
j=1 #新文件名中包含的序号
for f in files:
#通过 os.path.join将目录和文件名进行拼接
old_path = os.path.join(root,f)
# 将获取的文件名分解为 文件名和扩展名
(shotname, extension) = os.path.splitext(f)
#判断文件名中是否包含old字符,包含则执行下面的内容
if 'old' in shotname:
#拼接新的文件名为,窦性+文件序号i+扩展名
new_name = "窦性"+str(i)+ extension
#拼接新文件的路径
new_path = os.path.join("E:/new1", new_name)
i = i + 1
#判断文件名中是否包含new字符,包含则执行下面的内容
elif 'new' in shotname:
#拼接新的文件名为,房颤+文件序号j+扩展名
new_name = "房颤"+str(j)+ extension
#拼接新文件的路径
new_path = os.path.join("E:/new2", new_name)
j = j + 1
#将原文件按照上面的判断条件赋值到对应的新路径并修改为新名称
open(new_path,'wb').write(open(old_path,'rb').read())