Python内置的os模块可以调用操作系统提供的接口函数,对文件或目录进行操作(实际上操作系统是不允许应用程序直接访问和操作文件和目录的,读写文件就是请求操作系统打开一个文件对象,通常称为文件描述符。然后,通过操作系统提供的接口从这个文件对象中读取数据,或者把数据写入这个文件对象。)
os模块一般有以下功能:
>>> import os
>>> os.name # 操作系统名字
'posix'
>>> os.uname() #获取详细的操作系统信息,windows不支持。
('Darwin', 'iMac.local', '13.3.0', 'Darwin Kernel Version 13.3.0: Tue Jun 3 21:27:35 PDT 2014; root:xnu-2422.110.17~1/RELEASE_X86_64', 'x86_64')
注:如果是posix,操作系统是linux,Unix,Mac OS X.如果是nt,操作系统则是windows。
>>> os.environ #在操作系统中定义的环境变量,全部保存在os.environ这个dict中,可以直接查看
{'VERSIONER_PYTHON_PREFER_32_BIT': 'no', 'TERM_PROGRAM_VERSION': '326', 'LOGNAME': 'michael', 'USER': 'michael', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/mysql/bin', ...}
>>> os.getenv('PATH') #要获取某个环境变量的值,可以调用os.getenv()函数
'/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/local/mysql/bin'
# 查看当前目录的绝对路径:
>>> os.path.abspath('.')
'/Users/michael'
# 对路径进行连接组合,可以直接处理不同系统的路径分隔符。
>>> os.path.join('/Users/michael', 'testdir')
'/Users/michael/testdir'
# 然后创建一个目录:
>>> os.mkdir('/Users/michael/testdir')
# 删掉一个目录:
>>> os.rmdir('/Users/michael/testdir')
>>> os.path.split('/Users/michael/testdir/file.txt') #对路径进行拆分,最后一部分总是最后级别的目录或文件。
('/Users/michael/testdir', 'file.txt')
>>> os.path.splitext('/path/to/file.txt') #可以让你得到文件的后缀名
('/path/to/file', '.txt')
# 对文件重命名:将txt文件重命名为py文件
>>> os.rename('test.txt', 'test.py')
# 删掉文件:
>>> os.remove('test.py')
复制文件的函数居然在os模块中不存在!原因是复制文件并非由操作系统提供的系统调用。理论上讲,我们通过上一节的读写文件可以完成文件复制,只不过要多写很多代码。幸运的是shutil模块提供了copyfile()的函数,你还可以在shutil模块中找到很多实用函数,它们可以看做是os模块的补充。关于shutil模块可以参考月与灯依旧
>>> [x for x in os.listdir('.') if os.path.isdir(x)] #只列出当前目录下的所有目录,不输出文件。
['.lein', '.local', '.m2', '.npm', '.ssh', '.Trash', '.vim', 'Adlm', 'Applications', 'Desktop', ...]