os模块
本章节内容:
1、os路径处理
2、os 模块的常用方法
3、复习os模块常用的一些操作
4、os.path模块
4.1 os.path模块常用方法
4.2常用方法列表
5、作业
6、扩展阅读
1、os路径处理
#方式一:推荐使用 import os #具体应用 import os,sys possible_topdir = os.path.normpath(os.path.join( os.path.abspath(__file__), os.pardir, #上一级 os.pardir, os.pardir )) sys.path.insert(0,possible_topdir) #方式二:不推荐使用 os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) #此方法添加的是临时路径
在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。 >>> os.path.normcase('c:/windows\\system32\\') 'c:\\windows\\system32\\' 规范化路径,如..和/ >>> os.path.normpath('c://windows\\System32\\../Temp/') 'c:\\windows\\Temp' >>> a='/Users/jieli/test1/\\\a1/\\\\aa.py/../..' >>> print(os.path.normpath(a)) /Users/jieli/test1
2、os 模块的常用方法
2.1 getcwd() 和chdir(path)
import os d = os.getcwd() #获取当前工作的目录 print(d) os.chdir('D:\\') #改变当前的工作目录,比如切换到D盘 print(os.getcwd())
2.2 listdir(path='.')
用于列举当前目录下有那些文件和子目录。path参数可以指定列举的目录,默认是‘.’ ,‘.’ 代表根目录,‘..’ 代表上一层目录
import os a = os.listdir('.') print(a) # ['f.py', 'list1.py', 'os_orpd.py', 'pickle_1.py', 'record.txt'] b = os.listdir('C:\\') #指定目录 print(b)
2.3 mkdir(path)
用于创建文件夹,如果改文件夹存在,则抛出FileExistsError异常
import os os.mkdir("test") #在当前工作目录下创建test c = os.listdir() #默认为当前工作目录 print(c) #存在或报错, FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'test'
2.4 makedirs(path)
用于创建多层目录:
os.makedirs(r'.\a\b\c') print(os.listdir())
效果:
2.5 remove(path)、rmdir(path)和removedirs(path)
remove()函数用于删除指定的文件,注意是删除文件,不删除目录
rmdir()函数用于删除目录
removedirs()函数用于删除多层目录
import os os.makedirs(r'.\a\b\c') #创建多层文件目录 os.mkdir(r'.\m') #创建单层目录 print(os.listdir()) # ['a','m', 'f.py', 'list1.py', 'os_orpd.py', 'pickle_1.py', 'record.txt', 'test'] os.remove("record.txt") #删除文件 os.rmdir(m) #删除单层目录 os.removedirs(r"a\b\c") #删除多层目录 print(os.listdir())
2.6 rename(old,new)
用于重命名为文件或文件夹
import os print(os.listdir()) #['a', 'f.py', 'list1.py', 'm', 'os_orpd.py', 'pickle_1.py', 'test'] os.rename('test','test_new') #修改文件的名称 os.rename('a','a_new') #修改文件夹的名称 print(os.listdir()) #['a_new', 'f.py', 'list1.py', 'm', 'os_orpd.py', 'pickle_1.py', 'test_new']
2.7 system(command)
用于使用一些小工具和命令
import os os.system('calc') #计算器 os.system('cmd') os.system('dir') os.system('ipconfig')
2.8 walk(top)
作用是遍历top参数指定路径下的所有子目录,并将结果返回一个三元组(路径,[包含目录],[包含文件])
import os print(os.listdir('.')) #['a_new', 'f.py', 'list1.py', 'm', 'os_orpd.py', 'pickle_1.py', 'test_new'] for i in os.walk("a_new"): print(i) """ ('a_new', ['b'], []) ('a_new\\b', ['c'], []) ('a_new\\b\\c', [], []) """
3、复习os模块常用的一些操作
4、os.path模块
4.1 os.path模块常用方法
basename(path) 和dirname(path)
import os.path #获取文件的路径 print(os.path.dirname(r'.a\b\c\r.py')) # .a\b\c #获取文件的名称 print(os.path.basename(r'.a\b\c\r.py')) #r.py
join(path1[,path2[,...]])
import os.path #将文件名和路径名组合成一个完整的路径 a = os.path.join(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c','r.py') print(a) #D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c\r.py
split(path)和splitext(path)
import os.path #split()和splitext() 函数都用于分割路径 #split()函数分割路径和文件名 。(如果完全使用目录,也会把最后一个目录作为文件名分离,且不会判断文件或者目录是否存在 # splitext()函数用于分割文件名和扩展名
#split()函数分割路径名和文件名 a = os.path.split(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c\r.py') print(a) # ('D:\\Program Files\\PythonProgram\\untitled03\\xiaojiayu\\列表\\a_new\\b\\c', 'r.py') #完全使用目录的情况 b = os.path.split(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c') print(b) # ('D:\\Program Files\\PythonProgram\\untitled03\\xiaojiayu\\列表\\a_new\\b', 'c') # splitext()分割文件名和扩展名 c =os.path.splitext(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\a_new\b\c\r.py') print(c) # ('D:\\Program Files\\PythonProgram\\untitled03\\xiaojiayu\\列表\\a_new\\b\\c\\r', '.py')
getsize(file)
import os.path #getsize()函数用于获取文件的尺寸,返回值是以字节为单位的 a = os.path.getsize(r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\os_orpd.py') print(a) # 355
getatime(file)、getctime(file)和getmtime(file)
getatime(file) :获得文件的最近访问时间,返回值都是浮点型,可以用time模块的gmtime()或者localtime()函数换算
getctime(file) :获得文件的创建时间,返回值都是浮点型,可以用time模块的gmtime()或者localtime()函数换算
getmtime(file):获得文件的修改时间 ,返回值都是浮点型,可以用time模块的gmtime()或者localtime()函数换算
import os.path import time path = r'D:\Program Files\PythonProgram\untitled03\xiaojiayu\列表\os_orpd.py' temp1 = time.localtime(os.path.getatime(path)) print('os_orpd.py的最后访问时间是:',time.strftime("%d%b%Y%H:%M:%S",temp1)) temp2 = time.localtime(os.path.getctime(path)) print('os_orpd.py的创建时间是:',time.strftime("%d%b%Y%H:%M:%S",temp2)) temp3 = time.localtime(os.path.getmtime(path)) print('os_orpd.py的修改时间是:',time.strftime("%d%b%Y%H:%M:%S",temp3)) """ os_orpd.py的最后访问时间是: 16Dec201817:46:48 os_orpd.py的创建时间是: 16Dec201816:10:50 os_orpd.py的修改时间是: 16Dec201817:46:48 """
4.2常用方法列表
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.curdir 返回当前目录: ('.') os.pardir 获取当前目录的父目录字符串名:('..') os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename("oldname","newname") 重命名文件/目录 os.stat('path/filename') 获取文件/目录信息 os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n" os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为: os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix' os.system("bash command") 运行shell命令,直接显示 os.environ 获取系统环境变量 os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False os.path.isabs(path) 如果path是绝对路径,返回True os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 os.path.getsize(path) 返回path的大小
5、作业
[课后作业] 第030讲:文件系统:介绍一个高大上的东西 | 课后测试题
6、扩展阅读