os模块和shutil模块
# 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
步骤:
- 先从根目录进行遍历,读取根目录的文件夹和文件。
- 以根目录第一个子目录为新的根目录,读取其文件夹和文件。
- 再以2中的第一个子文件夹为根目录,读取文件夹和文件。(这个应该是属于树结构里面的自上而下深度遍历算法)
- 最后再以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)
- 参数top表示需要遍历的目录树的路径
- 参数topdown的默认值是"True",表示首先返回目录树下的文件,然后在遍历目录树的子目录.Topdown的值为"False"时,则表示先遍历目录树的子目录,返回子目录下的文件,最后返回根目录下的文件
- 参数onerror的默认值是"None",表示忽略文件遍历时产生的错误.如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历
- 该函数返回一个元组,该元组有3个元素,这3个元素分别表示每次遍历的路径名开始的根目录),目录列表和文件列表
os.path.walk()
函数声明:walk(top,func,arg)
- 参数top表示需要遍历的目录树的路径
- 参数func表示回调函数,对遍历路径进行处理.所谓回调函数,是作为某个函数的参数使用,当某个时间触发时,程序将调用定义好的回调函数处理某个任务.回调函数必须提供3个参数:第1个参数为walk()的参数tag,第2个参数表示目录列表,第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模块的更多相关文章
- [转]python中对文件、文件夹的操作——os模块和shutil模块常用说明
转至:http://l90z11.blog.163.com/blog/static/187389042201312153318389/ python中对文件.文件夹的操作需要涉及到os模块和shuti ...
- 元数据的概念以及相关的操作os模块、shutil模块
查看文件的元数据 stat [OPTION]… FILE… OPTION: -f 输出文件系统的状态,而非文件的状态 -t 显示简要格式的文件元数据信息 FILE:可同时查看多个文件的元数据信息,多个 ...
- python常用模块之shutil模块
python常用模块之shutil模块 shutil模块,高级的文件.文件夹.压缩包处理模块 1.shutil.copyfile(src,des[,length]):将文件内容拷贝到另一个文件 In ...
- (汇总)os模块以及shutil模块对文件的操作
''' # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux ...
- Python进阶5---StringIO和BytesIO、路径操作、OS模块、shutil模块
StringIO StringIO操作 BytesIO BytesIO操作 file-like对象 路径操作 路径操作模块 3.4版本之前:os.path模块 3.4版本开始 建议使用pathlib模 ...
- os模块、os.path模块、shutil模块、configparser模块、subprocess模块
一.os模块 os指的是操作系统 该模块主要用于处理与操作系统相关的操作,常用的是文件操作(读.写.删.复制.重命名). os.getcwd() 获取当前文件所在的文件夹路径 os.chdir() ...
- day5模块学习--shutil模块
shutil模块 高级的 文件.文件夹.压缩包 处理模块 os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作.比如说:绝对路径,父目录…… 但是,os文件的操作 ...
- sys模块和shutil模块
一.sys模块 常用方法有: #!/usr/bin/env python3 #-*- coding:utf-8 -*- # write by congcong import sys # 命令行参数Li ...
- logging模块、shutil模块、subprocess模块、xml模块
logging模块 shutil模块 subprocess模块 xml模块 logging模块 函数式简单配置 import logging logging.debug('debug message' ...
随机推荐
- python 类函数,实例函数,静态函数
一.实现方法 class Function(object): # 在类定义中定义变量 cls_variable = "class varibale" def __init__(se ...
- “一切都是消息”--iMSF(即时消息服务框架)之【发布-订阅】模式
MSF的名字是 Message Service Framework 的简称,由于目前框架主要功能在于处理即时(immediately)消息,所以iMSF就是 immediately Message S ...
- Linux Linux内核参数调优
Linux内核参数调优 by:授客 QQ:1033553122 关于调优的建议: 1.出错时,可以查看操作系统日志,可能会找到一些有用的信息 2.尽量不要“批量”修改内核参数,笔者就曾这么干过,结果“ ...
- Android 震动模式
震动类 public class VibratorUtil { private static final long DEFAULT_VIBRATOR = 100; private static Vib ...
- Kotlin入门(6)条件分支的实现
上一篇文章介绍了字符串的相关操作,其中示例代码用到了if和for语句,表面上看,Kotlin对控制语句的处理与Java很像,可实际上,Kotlin在这方面做了不少的改进,所以本篇和下一篇文章就分别介绍 ...
- centos7 Linux 安装jdk1.8
在CentOS7上安装JDK1.8 1 通过 xshell 连接到CentOS7 服务器: 2 进入到目录 /usr/local/ 中(一般装应用环境我们都会在这个目录下装,也可自行选择目录): cd ...
- 利用trie树实现前缀输入提示及trie的python实现
代码来自https://github.com/wklken/suggestion/blob/master/easymap/suggest.py 还实现了缓存功能,搜索某个前缀超过一定次数时,进行缓存, ...
- mysql中的utf8mb4、utf8mb4_unicode_ci、utf8mb4_general_ci
1.utf8与utf8mb4(utf8 most bytes 4) MySQL 5.5.3之后增加了utfmb4字符编码 支持BMP(Basic Multilingual Plane,基本多文种平面) ...
- 04-openldap客户端安装
阅读视图 基础环境准备 关闭sssd及安装nslcd客户端 配置nslcd客户端 启动nslcd进程 客户端验证 ssh登录自动创建家目录 1. 基础环境准备 本文承接openldap服务端安装配置, ...
- 高通非adsp 架构下的sensor的bug调试
高通 sensor 从native到HAL 高通HAL层之Sensor HAL 高通HAL层之bmp18x.cpp 问题现象: 当休眠后,再次打开preesure sensor的时候,会出现隔一段时候 ...