模块是包含所有你定义的变量和函数的文件,其后缀为.py,模块可以被别的程序引入,以使用该模块中的函数等功能。不同的操作系统,操作系统底层对文件系统的访问原理是不一样的。因为可能针对不同的系统考虑使用哪些系统文件模块,会很麻烦。有了os模块,会帮我们选择正确的模块并调用之。
os模块中关于文件/目录常用的函数使用方法
函数名 | 使用方法 |
---|---|
getcwd() | 返回当前工作目录 |
chdir(path) | 改变工作目录 |
listdir(path=’.’) | 列举指定目录中的文件名(’.’表示当前目录,’..’表示上一级的目录) |
mkdir(path) | 创建单层目录,如该目录已存在则抛出异常 |
makedirs(path) | 递归创建多层目录,如该目录已存在抛出异常 |
remove(path) | 删除文件 |
rmdir(path) | 删除单层目录,如果该目录非空抛出异常 |
removedirs(path) | 递归删除目录,从子目录到父目录逐层删除目录,如果遇到非空目录则抛出异常 |
rename(old,new) | 将文件old重命名为new |
system(command) | 运行系统的shell命令 |
以下是支持路径操作中常遇到的一些定义,支持所以平台 | |
os.curdir | 指代当前目录(‘.’) |
os.pardir | 指代上一级目录(‘..’) |
os.sep | 输出当前操作系统的特定路径分割符,Windows系统是’\’,linux系统是’/’ |
os.linesep | 当前平台使用的行终止符,win下是’\r\n’,linux下为’\n’ |
os.name | 指代当前使用的操作系统,有’nt’,’max’等 |
获得当前目录
>>> import os
>>> os.getcwd()
'E:\\Python35'
改变工作目录
>>> os.chdir('G:\\')
>>> os.getcwd()
'G:\\'
列举当前目录的文件名
>>> os.listdir('.')
['$RECYCLE.BIN', 'baiduyundownloading', 'cloudmusic', 'googledownloading', 'iedownloading', 'installationpackage', 'pythoncode', 'System Volume Information', 'test.txt', 'train.txt', 'webchartcode', 'webchatfilemanager', '迅雷downloading']
创建单层目录
>>> os.mkdir('G:\\B')
创建多成目录
>> os.makedirs('G:\\A\\B')
删除单层目录
当在G盘存在C文件夹,C文件夹里面有A文件夹,文件夹
A里面没有任何目录或文件,调用此函数会删除A文件夹
>>> os.rmdir('G:\\C\\A')
删除多层目录,删除文件
当在G盘存在A文件夹,A文件夹里面有B文件夹,文件夹
A里面没有任何目录或文件,调用此函数会递归地删除B文件夹,A文件夹。如果B文件夹还存在test.txt文件,需要先删除文件才能删除目录。
>>> os.remove('G:\\A\\B\\test.txt')
>>> os.removedirs("G:\\A\\B")
>>> os.system('cmd')#打开cmd命令行
>>> os.system('calc')#打开计算机
当前目录符号,上级目录符号,不同的平台符号不一样
>>> os.curdir
'.'
>>> os.pardir
'..'
>>> os.listdir(os.curdir)#比较规范的书写获取当前目录下的文件名,相当于os.listdir('.')
>>> os.sep
'\\'
>>> os.linesep
'\r\n'
>>> os.name
'nt'
>>>
os.path模块关于路径常用的函数使用方法
函数名 | 使用方法 |
---|---|
basename(path) | 去掉目录路径,单独返回文件名 |
dirname(path) | 去掉文件名,单独返回目录路径 |
join(path1[,path2][,…]) | 将path1,path2各部分组合成一个路径名 |
split(path) | 分割文件名与路径,返回(f_path,f_name)元组。如果完全使用目录。它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在 |
splittext(path) | 分离文件名与扩展名,返回(f_name,f_extension)元组 |
getsize(file) | 返回指定文件的尺寸,单位是字节 |
getatime(file) | 返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算) |
getctime(file) | 返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算) |
getmtime(file) | 返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算) |
>>> import os
>>> os.path.basename("E:\\A\\B\\C\\aa.txt")
'aa.txt'
>>> os.path.dirname("E:\\A\\B\\C\\aa.txt")
'E:\\A\\B\\C'
>>> os.path.join('C:\\','A','B','D')
'C:\\A\\B\\D'
>>> os.path.split('E:\\A\\aa.txt') #就是最后一个是文件夹也会分割
('E:\\A', 'aa.txt')
>>> os.path.splitext('E:\\A\\aa.txt')
('E:\\A\\aa', '.txt')
>>> time.localtime(os.path.getmtime('G:\\a.txt'))#最近修改时间
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=26, tm_hour=12, tm_min=28, tm_sec=31, tm_wday=6, tm_yday=57, tm_isdst=0)
>>> time.localtime(os.path.getctime('G:\\a.txt'))#返回文件的创建时间
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=26, tm_hour=12, tm_min=20, tm_sec=4, tm_wday=6, tm_yday=57, tm_isdst=0)
>>> time.localtime(os.path.getatime('G:\\a.txt'))#返回最近访问时间
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=26, tm_hour=12, tm_min=20, tm_sec=4, tm_wday=6, tm_yday=57, tm_isdst=0)
以下函数返回True或者False
exists(path) | 判断指定路径(目录或文件)是否存在 |
isabs(path) | 判断指定路径是否是绝对路径 |
isdir(path) | 判断指定路径是否存在且是一个目录 |
isfile(path) | 判断指定路径是否存在且是一个文件 |
islink(path) | 判断指定路径是否存在且是一个符号链接 |
ismount() | 判断指定路径是否存在且是一个挂载点 |
samefile(path1,path2) | 判断path1,path2两个路径是否指向同一个文件 |
>>> os.path.ismount("E:\\")#盘符是挂载点
True
>>> os.path.ismount("E:\\A") # 盘下的目录不是挂载点
False