# coding=utf-8
import os
path="D:\\test"
######### 目录结构如下
# test
# / \ \ \
# test01 test02 test.docx test.txt
# / / \ \ / \
# test01-01 test01-02 test01.docx test01.txt test02.docx test02.txt
# / \
# test01-01.docx test01-01.txt
#########
for root,dirs,files in os.walk(path):
print("root=",root,"dirs=",dirs,"files=",files)
if len(files) !=0:
print os.path.join(root, files[0]) #获得文件的全路径

输出结果:

('root=', 'D:\\test', 'dirs=', ['test01', 'test02'], 'files=', ['test.docx', 'test.txt'])
D:\test\test.docx
('root=', 'D:\\test\\test01', 'dirs=', ['test01-01', 'test01-02'], 'files=', ['test01.docx', 'test01.txt'])
D:\test\test01\test01.docx
('root=', 'D:\\test\\test01\\test01-01', 'dirs=', [], 'files=', ['test01-01.docx', 'test01-01.txt'])
D:\test\test01\test01-01\test01-01.docx
('root=', 'D:\\test\\test01\\test01-02', 'dirs=', [], 'files=', [])
('root=', 'D:\\test\\test02', 'dirs=', [], 'files=', ['test02.docx', 'test02.txt'])
D:\test\test02\test02.docx

步骤:

  1. 先从根目录进行遍历,读取根目录的文件夹和文件。
  2. 以根目录第一个子目录为新的根目录,读取其文件夹和文件。
  3. 再以2中的第一个子文件夹为根目录,读取文件夹和文件。(这个应该是属于树结构里面的自上而下深度遍历算法)
  4. 最后再以1中的第二个子目录为新的根目录,以此类推,直到遍历完为止。
for root ,dirs ,files in os.walk(path):
print root,dirs,files
for name in dirs:
if name == 'svn':
print name
shutil.rmtree(os.path.join(root,name)) #删除目录
for name in files:
if name=='test.txt':
os.remove(os.path.join(root,name)) #删除文件

os.walk()
函数声明:walk(top,topdown=True,onerror=None)

  1. 参数top表示需要遍历的目录树的路径
  2. 参数topdown的默认值是"True",表示首先返回目录树下的文件,然后在遍历目录树的子目录.Topdown的值为"False"时,则表示先遍历目录树的子目录,返回子目录下的文件,最后返回根目录下的文件
  3. 参数onerror的默认值是"None",表示忽略文件遍历时产生的错误.如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历
  4. 该函数返回一个元组,该元组有3个元素,这3个元素分别表示每次遍历的路径名开始的根目录),目录列表和文件列表

os.path.walk()
函数声明:walk(top,func,arg)

  1. 参数top表示需要遍历的目录树的路径
  2. 参数func表示回调函数,对遍历路径进行处理.所谓回调函数,是作为某个函数的参数使用,当某个时间触发时,程序将调用定义好的回调函数处理某个任务.回调函数必须提供3个参数:第1个参数为walk()的参数tag,第2个参数表示目录列表,第3个参数表示文件列表
  3. 参数arg是传递给回调参数func的元组.回调函数的一个参数必须是arg,为回调函数提供处理参数.参数arg可以为空
# coding=utf-8
import os
path="D:\\test"
######### 目录结构如下
# test
# / \ \ \
# test01 test02 test.docx test.txt
# / / \ \ / \
# test01-01 test01-02 test01.docx test01.txt test02.docx test02.txt
# / \
# test01-01.docx test01-01.txt
#########
# os.path.walk()与os.walk()产生的文件名列表并不相同.os.path.walk()产生目录树下的目录路径和文件路径,而os.walk()只产生文件路径
print "以下是os.walk 产生的目录:"
for root,dirs,files in os.walk(path):
print("root=",root,"dirs=",dirs,"files=",files)
for fileName in files:
print os.path.join(root,fileName) #获得文件的全路径 def func(arg,dirname,names):
for fileName in names:
print os.path.join(dirname,fileName)
print "以下是os.path.walk 产生的目录:"
if __name__=="__main__":
os.path.walk(path,func,())

二、python中对文件、文件夹的操作需要涉及到os模块和shutil模块。

创建文件:
1) os.mknod("test.txt") 创建空文件
2) open("test.txt",w) 直接打开一个文件,如果文件不存在则创建文件

创建目录:
os.mkdir("file") 创建目录
os.makedirs(outnewpath) 创建多级目录

复制文件:
shutil.copyfile("oldfile","newfile") oldfile和newfile都只能是文件
shutil.copy("oldfile","newfile") oldfile只能是文件夹,newfile可以是文件,也可以是目标目录

复制文件夹:
shutil.copytree("olddir","newdir") olddir和newdir都只能是目录,且newdir必须不存在

重命名文件(目录)
os.rename("oldname","newname") 文件或目录都是使用这条命令

移动文件(目录)
shutil.move("oldpos","newpos")

删除文件
os.remove("file")

删除目录
os.rmdir("dir") 只能删除空目录
shutil.rmtree("dir") 空目录、有内容的目录都可以删

转换目录
os.chdir("path") 换路径

判断目标
os.path.exists("goal") 判断目标是否存在
os.path.isdir("goal") 判断目标是否目录
os.path.isfile("goal") 判断目标是否文件

os模块和shutil模块的更多相关文章

  1. [转]python中对文件、文件夹的操作——os模块和shutil模块常用说明

    转至:http://l90z11.blog.163.com/blog/static/187389042201312153318389/ python中对文件.文件夹的操作需要涉及到os模块和shuti ...

  2. 元数据的概念以及相关的操作os模块、shutil模块

    查看文件的元数据 stat [OPTION]… FILE… OPTION: -f 输出文件系统的状态,而非文件的状态 -t 显示简要格式的文件元数据信息 FILE:可同时查看多个文件的元数据信息,多个 ...

  3. python常用模块之shutil模块

    python常用模块之shutil模块 shutil模块,高级的文件.文件夹.压缩包处理模块 1.shutil.copyfile(src,des[,length]):将文件内容拷贝到另一个文件 In ...

  4. (汇总)os模块以及shutil模块对文件的操作

    ''' # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux ...

  5. Python进阶5---StringIO和BytesIO、路径操作、OS模块、shutil模块

    StringIO StringIO操作 BytesIO BytesIO操作 file-like对象 路径操作 路径操作模块 3.4版本之前:os.path模块 3.4版本开始 建议使用pathlib模 ...

  6. os模块、os.path模块、shutil模块、configparser模块、subprocess模块

    一.os模块 os指的是操作系统 该模块主要用于处理与操作系统相关的操作,常用的是文件操作(读.写.删.复制.重命名). os.getcwd()  获取当前文件所在的文件夹路径 os.chdir()  ...

  7. day5模块学习--shutil模块

    shutil模块 高级的 文件.文件夹.压缩包 处理模块 os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作.比如说:绝对路径,父目录……  但是,os文件的操作 ...

  8. sys模块和shutil模块

    一.sys模块 常用方法有: #!/usr/bin/env python3 #-*- coding:utf-8 -*- # write by congcong import sys # 命令行参数Li ...

  9. logging模块、shutil模块、subprocess模块、xml模块

    logging模块 shutil模块 subprocess模块 xml模块 logging模块 函数式简单配置 import logging logging.debug('debug message' ...

随机推荐

  1. windows使用笔记-安装64位windows7家庭普通版的方法

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 从msdn网站:http://msdn.itellyou.cn/ 下载<cn_windows_7_ultimate_wit ...

  2. pygame编组(精灵组)Group中的常用方法介绍

    说明: 1.以下所用的Group均为Group类的对象实例 2.Group类是对AbstractGroup类的继承 sprite.py文档中描述如下: class Group(AbstractGrou ...

  3. Navicat安装及简单使用

    一.安装 下载完之后,直接解压出来就能用,看一下解压之后的目录: 双击打开下面这个文件(可以把它添加一个桌面快捷方式,或者添加到任务栏): 然后会提示你输入注册码: 回到navicat的解压出来的文件 ...

  4. 【读书笔记】iOS-OCUnit-单元测试

    一,新建立一个hello工程--->在左侧会看到helloTests---->helloTests.m.如下图所示. 二,打开查看会看到如下代码. #import <UIKit/UI ...

  5. IntelliJ idea连接操作DB2数据库

    一.场景 一直都是用navicat作为数据库的连接工具,但是navicat不支持连接DB2,网上也推荐很多其它软件工具,但是因为DB2用的场景不多,这次只是开发etl工具需要测试数据库,正好发现ide ...

  6. 安卓开发_浅谈ListView之分页列表

    前言: 在开发的过程中,有时候我们需要从网络解析一些数据,比如最近的一些新闻,我们需要把这些数据用ListView显示出来. 因为是解析一个网络数据源,这样将会一下子将所有的数据解析出来,当数据源数据 ...

  7. eclipse显示代码行数

    最近做的手机APP正在进行最后一部分了,在一个类中估计要写上千行代码,来回的拉动滚动条太麻烦了,于是发现为什么我得eclipse不显示代码行数呢  其他C什么的编译器都显示的. 于是百度了一下,一下子 ...

  8. Android之移动热修复

    阿里云推出了移动热修复服务,听说这个服务傻瓜式接入,性能相对较好,对新技术比较好奇的我决定尝试一下. 1.首先,需要开通这个服务,创建应用 2.然后,在项目中接入服务.按照文档所述 第一步:gradl ...

  9. typescritp 导出默认接口

    假如有ITest.ts文件,如下: export default interface ITest{ } 这样会报错,编译不通过.据说是设计成这样的,具体详细见:https://github.com/M ...

  10. .Net Core 2.0 生态(2).NET Core 2.0 特性介绍和使用指南

    .NET Core 2.0发布日期:2017年8月14日 前言 这一篇会比较长,介绍了.NET Core 2.0新特性.工具支持及系统生态,现状及未来计划,可以作为一门技术的概述来读,也可以作为学习路 ...