本篇主要介绍os模块和sys模块,主要介绍这两种模块的方法及使用。
一、os模块
os模块主要用于与操作系统打交道,Python中的os模块包含普遍的操作系统功能,即如果你希望你的程序与操作系统平台无关,那么os模块就尤为重要。
下面便是os模块下的各种方法:
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所指向的文件或者目录的最后修改时间 |
用法:
#1、os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 >>> os.getcwd() 'C:\\WINDOWS\\system32' #2、os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd >>> os.chdir(r"C:\Users\28352\PycharmProjects\learning\Day22") >>> os.getcwd() 'C:\\Users\\28352\\PycharmProjects\\learning\\Day22' #3、os.makedirs('dirname1/dirname2') 可生成多层递归目录 >>> os.makedirs(r"test1\test2") #在当前目录下生成 test1\test2 #4、os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 >>> os.removedirs(r"test1\test2") #当前目录下的test1\test2均删除,若test1下有其他文件则不删 #5、os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname >>> os.listdir() ['json模块.py', 'logging模块', 'os_test', 'os模块.py', 'pickle_test', 'pickle模块.py', 'sys_模块.py', 'test01', 'test1', 'XML模块', '__init__.py'] #6、os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname >>> os.mkdir(r"test1\test2") #7、os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname >>> os.rmdir(r"test1") Traceback (most recent call last): File "<stdin>", line 1, in <module> OSError: [WinError 145] 目录不是空的。: 'test1' #8、os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 >>> os.listdir() ['json模块.py', 'logging模块', 'os_test', 'os模块.py', 'pickle_test', 'pickle模块.py', 'sys_模块.py', 'test01', 'test1', 'XML模块', '__init__.py'] #9、os.remove() 删除一个文件 >>> os.rename(r"test1",r"test001") #将test1修改为test001 #10、os.stat('path/filename') 获取文件/目录信息 >>> os.stat(r"test001") os.stat_result(st_mode=16895, st_ino=21110623253299938, st_dev=1653245188, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1529501427, st_mtime=1529501427, st_ctime=1529499311) #11、os.system("bash command") 运行shell命令,直接显示 >>> os.system("ipconfig") Windows IP 配置 以太网适配器 以太网: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 1: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 无线局域网适配器 本地连接* 2: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : 以太网适配器 VMware Network Adapter VMnet1: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::9042:892f:b8e6:43b2%13 IPv4 地址 . . . . . . . . . . . . : 192.168.80.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 以太网适配器 VMware Network Adapter VMnet8: 连接特定的 DNS 后缀 . . . . . . . : 本地链接 IPv6 地址. . . . . . . . : fe80::b12b:8d5e:8913:f4c0%12 IPv4 地址 . . . . . . . . . . . . : 192.168.220.1 子网掩码 . . . . . . . . . . . . : 255.255.255.0 默认网关. . . . . . . . . . . . . : 无线局域网适配器 WLAN: 媒体状态 . . . . . . . . . . . . : 媒体已断开连接 连接特定的 DNS 后缀 . . . . . . . : #12、os.path.abspath(path) 返回path规范化的绝对路径 >>> os.path.abspath(r"test1/test2") 'C:\\Users\\28352\\PycharmProjects\\learning\\Day22\\test1\\test2' #13、os.path.split(path) 将path分割成目录和文件名二元组返回 >>> dir1=os.path.abspath(r"test1/test2") >>> os.path.split(dir1) ('C:\\Users\\28352\\PycharmProjects\\learning\\Day22\\test1', 'test2') #13、os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素 >>> os.path.dirname(dir1) 'C:\\Users\\28352\\PycharmProjects\\learning\\Day22\\test1' #14、os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素 >>> os.path.basename(dir1) 'test2' #15、os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False >>> os.path.exists(dir1) False #16、os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 >>> os.path.join(r"C:\Users\28352\PycharmProjects\learning\Day21模块\time模块.py",r"C:\Users\28352\PycharmProjects\learning\Day22\json模块.py") 'C:\\Users\\28352\\PycharmProjects\\learning\\Day22\\json模块.py' #17、os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间 >>> os.path.getatime(r"C:\Users\28352\PycharmProjects\learning\Day21模块\time模块.py") 1528124214.8026803 #18、os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 >>> os.path.getmtime(r"C:\Users\28352\PycharmProjects\learning\Day21模块\time模块.py") 1528124214.8036835
总之:os模块就是针对间接的对操作系统进行操作,是程序与操作系统的接口,使得程序与任何操作系统平台无关。
二、sys模块
sys模块是针对Python解释器作相关操作。
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 |
示例:
1 >>> import sys 2 #1、sys.version 获取Python解释程序的版本信息 3 >>> sys.version 4 '3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)]' 5 6 #2、sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 7 >>> sys.path 8 ['', 'C:\\Program Files\\Python36\\python36.zip', 'C:\\Program Files\\Python36\\DLLs', 'C:\\Program Files\\Python36\\lib', 'C:\\Program Files\\Python36', 'C:\\Program Files\\Python36\\lib\\site-packages'] 9 10 #进度条 11 for i in range(100): 12 sys.stdout.write("#") #先写入缓存中,一次性打印在屏幕上 13 time.sleep(0.1) 14 sys.stdout.flush() #每次均刷新在屏幕上