# 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. springboot 配置文件说明

    你可以在自己创建的组件上使用@ConfigurationProperties注解,而Spring Boot自动配置的很多组件也添加了@ConfigurationProperties注解,可以通过Spr ...

  2. TCP协议学习总结

    1.TCP协议通过三次握手建连接,四次挥手断连接. 2.TCP的定时器都有哪些? 做什么用途? 3.TCP的慢启动是什么意思? 4.TCP的快速重传是什么意思?

  3. Linux Linux内核参数调优

    Linux内核参数调优 by:授客 QQ:1033553122 关于调优的建议: 1.出错时,可以查看操作系统日志,可能会找到一些有用的信息 2.尽量不要“批量”修改内核参数,笔者就曾这么干过,结果“ ...

  4. Java数据解析---SAX

    一.Sax解析 是从头到尾逐行逐个元素读取内容,修改较为不便,但适用于只读的大文档. Sax采用事件驱动的方式解析文档.简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(Dom可来来回 ...

  5. 如何解决用CMake未定义引用`JNI_CreateJavaVM'?

    我需要从C ++运行Java,一般来说问题已经解决,但我的make系统或脚本出了问题,有一个创建JVM的C ++文件: #include <jni.h> #include <iost ...

  6. Fiddler抓包使用教程-过滤

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/72929800 本文出自[赵彦军的博客] Fiddler抓包可以完成我们移动开发者的 ...

  7. 使用过AsyncTask、EventBus、Volley以及Retrofit,必须好好了解handler运行机制

    我们都知道在UI线程中不能进行耗时操作,例如数据读写.网络请求.Android 4.0开始,在主线程中进行网络请求甚至会抛出Android.os.NetworkOnMainThreadExceptio ...

  8. JavaWeb:Listener和Filter

    本文内容: Listener Filter 首发日期:2018-07-15 Listener 监听器Listener负责监听事件的发生.我们能在事件发生后执行一些自定义的操作,这就是监听器的意义. 监 ...

  9. office远程代码执行(CVE-2017-11882)

    office远程代码执行(CVE-2017-11882) 影响版本: MicrosoftOffice 2000 MicrosoftOffice 2003 MicrosoftOffice 2007 Se ...

  10. [20180801]insert导致死锁.txt

    [20180801]insert导致死锁.txt --//链接http://www.itpub.net/thread-2104135-2-1.html的讨论,自己有点疏忽了,插入主键相同也会导致死锁. ...