os模块和sys模块

 

  本篇主要介绍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模块

   总之: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() #每次均刷新在屏幕上

 

posted @ 2018-06-20 23:54  Little_five  阅读(266)  评论(0编辑  收藏  举报