python进阶3--文件系统
文件系统
python的标准库中包括大量工具,可以处理文件系统中的文件,构造和解析文件名,也可以检查文件内容。
pyhton表文件名表示为简单的字符串,另外还提供了一些工具,用来由os.path中平台独立的标准组成部分构造文件名。用os中的listdir()
可以列出一个目录中的内容,或者使用glob由一个模式建立文件名列表。
1.os.path ---平台独立的文件名管理
1.1 解析路径
os.path中的第一组函数可以用来将表示文件名的字符串解析为文件名的各个组成部分。有一点很重要,需要认识的这些函数并不要求路径真
实存在;它们只处理字符串。
路径解析依赖于os中定义的一些变量:
os.sep 路径各部分之间的分隔符 "/"
os.extsep 文件名和文件“扩展名”之间的分隔符 "."
os.curdir 当前目录的部分 "."
os.pardir 目录树上一层的部分 ".."
split()函数将路径分解为两个单独的部分,并返回包含这些结果的tuple.
import os.path
for path in ['/one/two/three','/four/five/six','/','.']:
print '%15s:%s' %(path,os.path.split(path)) #第二个元素是路径的最后一部分,第一个为其它的所有内容
返回:
/one/two/three:('/one/two', 'three')
/four/five/six:('/four/five', 'six')
/:('/', '')
.:('', '.')
1.2 建立路径
要将多个路径组成部分为一个值,可以使用join()
--------------------------------------------------------------------------------------------------------------
技巧类:
python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。
得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()
返回指定目录下的所有文件和目录名:os.listdir()
函数用来删除一个文件:os.remove()
删除多个目录:os.removedirs(r“c:\python”)
检验给出的路径是否是一个文件:os.path.isfile()
检验给出的路径是否是一个目录:os.path.isdir()
判断是否是绝对路径:os.path.isabs()
检验给出的路径是否真地存:os.path.exists()
返回一个路径的目录名和文件名:os.path.split() eg os.path.split('/home/swaroop/byte/code/poem.txt') 结果:('/home/swaroop/byte/code', 'poem.txt')
分离扩展名:os.path.splitext()
获取路径名:os.path.dirname()
获取文件名:os.path.basename()
运行shell命令: os.system(command)
读取和设置环境变量:os.getenv() 与os.putenv()
给出当前平台使用的行终止符:os.linesep Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'
指示你正在使用的平台:os.name 对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'
重命名:os.rename(old, new)
创建多级目录:os.makedirs(r“c:\python\test”)
创建单个目录:os.mkdir(“test”)
获取文件属性:os.stat(file)
修改文件权限与时间戳:os.chmod(file)
终止当前进程:os.exit()
获取文件大小:os.path.getsize(filename)
os.walk 文件遍历
语法:os.walk(top, topdown = True, onerror = None, followlinks = False)
文件结构:
父目录、子目录、二级子目录....
示例代码:
---------------------------------------------------------------
三个参数:分别返回 父目录、所有文件夹(不含路径)、所有文件名字
分析:先从根目录进行遍历,读取根目录的文件夹和文件,以根目录第一个子目录为新的根目录,读取其文件夹和文件.....
glob包:
glob包最常用的方法只有一个, glob.glob()。
该方法的功能与Linux中的ls相似,列出所有符合该表达式的文件(与正则表达式类似),将所有文件名放在一个表中返回。所以glob.glob()是一个查询目录下文件的好方法。
示例:
>>>import glob
>>>print glob.glob(r'c:\windows\*.txt')
['c:\\windows\\1.txt'], ['c:\\windows\\2.txt']