# 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. TUM数据集rgbd_benchmark工具的使用方法

    # 在学习视觉slam过程中,需要对数据集合进行预处理和对slam或者跟踪结果进行评价,TUM提供一组这样的工具,为了自己以后方便查找,于是把它记录下来 一.RGBD_Benchmark工具下载链接: ...

  2. long数值 转换为时间

    项目中,服务器端经常给客户端开发人员传一个长整形的时间数据, 对于一个 长整形 1446801883000,可以明显的看出 是以毫秒为单位的,因为最后有三个零,如果没有连续3个零的话就要判断单位了 那 ...

  3. Cannot find wrapper assembly for type library "ADODB". in VS2017

    Delete Microsoft ActiveX Data Objects {version} Library and then add it back. After resolving the pr ...

  4. Asp.net webForm设置允许表单提交Html

    1. 在表单需要提交Html的页面头部加入  ValidateRequest="false" <%@ Page Language="C#" AutoEve ...

  5. Django日志信息路径的设置

    django日志信息路径的设置, 因为我们经常在代码业务上线时候 需要进行调试,查看代码的后台运行情况,就需要设置django项目的具体的日志信息运维的路径了 LOGGING = { 'version ...

  6. mysql常用赋权命令

    GRANT 所需权限 ON 库名.表名 TO '账号'@'允许访问的IP地址'; 把中文按需替换掉 所需权限:select.insert.delete.update按需要来. 上面那个允许访问IP ' ...

  7. Servlet (HttpServletResponse)对象

    1.setStatus(int status)方法:用于设置HTTP响应消息的状态码,并生成响应状态行.响应状态行中的状态描述信息直接与状态码相关,HTTP版本由服务器确定,因此只需要通过这个方法设置 ...

  8. [MapReduce_1] 运行 Word Count 示例程序

    0. 说明 MapReduce 实现 Word Count 示意图 && Word Count 代码编写 1. MapReduce 实现 Word Count 示意图 1. Map:预 ...

  9. switch语句(初学者)

    C语言提供了另一种用于多分支选择的switch语句(常用于开关),一般形式为: switch ( 常量表达式 ) { case 常量1 :语句; case 常量2 :语句; case 常量3 :语句; ...

  10. Beta冲刺(3/5)(麻瓜制造者)

    今日已完成 邓弘立:完成了登录功能的重构,完成了部分商品管理功能 符天愉:利用ci开始写队友写好的管理员界面,由于后台独立开始使用一个仓库,所以晚上将alpha的版本更新到了git,并且添加了.git ...