OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作,OS模块提供对操作系统进行调用的接口。
几个重要函数:
os.getcwd()#查看当前所在路径,默认是Python程序所在路径 os.chdir()#切换目录,功能和linux中cd命令一样 os.curdir#返回当前目录‘.’ os.pardir#返回当前父目录‘..’ os.makedirs()#新建多级目录,功能和linux中的mkdir -p命令一样 os.removedirs()#删除多级目录,若目录非空,无法删除,以此类推 os.mkdir()#新建单级目录 os.rmdir()#删除单级目录 os.listdir()#列出制定目录下所有的目录和文件,以列表形式放回 os.remove()#删除文件 os.rename()#重命名文件 os.stat()#获取目录和文件信息 os.sep#输出当前操作系统分隔符,windows为‘\\’,Linux为‘/’ os.linesep#输出当前操作系统行终止符,windows为‘\t\n’,Linux为‘\n’ os.pathsep#输出用于分割文件路径的字符串 os.name#输出当前使用平台,windows为‘nt’,Linux为‘postix’ os.system()#输出Linux命令 os.environ()#获取系统环境变量 os.path.abspath()#输出绝对路径 os.path.split()#将path分割成目录和文件名的二元组返回 os.path.dirname()#返回path的目录 os.path.basename()#返回path最后的文件名 os.path.exists()#判断路径是否存在,返回Ture或False os.path.isabs()#判断路径是否绝对路径,返回True或False os.path.isflie()#判读是否是文件,返回True或False os.path.isdir()#判断是否是目录,返回True或False os.path.join()#将多个文件组合返回 os.path.getatime()#获取路径最后存取时间 os.path.getmtime()#获取路径最后修改时间
我们来看下各个函数的例子:
1.os.getcwd()、os.chdir()
import os os.getcwd() #当前所在目录 os.chdir(r‘d:\\‘) #切换路径 os.getcwd()
输出结果:
‘D:\\Program Files\\python3.6‘ ‘d:\\‘
2.os.curdir和os.pardir
os.curdir os.pardir
输出结果:
‘.‘ ‘..‘
3.os.makedirs()
新建多级目录,类似Linux中mkdir -p的作用。
import os os.path.exists(‘d:\\234‘) #检查d:\\234目录是否存在 os.makedirs(‘d:\\234\\234‘) #新建多级目录 d:\\234\\234os.path.exists(‘d:\\234‘) #检查d:\\234目录是否存在 os.path.exists(‘d:\\234\\234‘)#检查d:\\234\\234目录是否存在
输出结果:
False #d:\\234目录不存在 True #d:\\234目录存在 True #d:\\234\\234目录存在
使用os.makedirs()函数同时新建了d:\\234及d:\\234\234两个目录,且这两个目录是父子关系。
4.os.removedirs()
import os print(os.path.exists(‘d:\\234‘)) print(os.path.exists((‘d:\\234\\234‘))#判断d:\\234\\234目录是否存在 os.removedirs(‘d:\\234\\234‘)#删除d:\\234下所有,包括子目录\\234 print(os.path.exists(‘d:\\234‘))#判断是否已经删除子目录\\234
输出结果:
True True False
从os.path.exists(‘d:\\234’)的输出结果来看,表明os.removedirs()已经将d:\\234和子目录\\234都删除了。
5.os.mkdir和os.rmdir
os.mkdir和os.rmdir用法和Linux中mkdir、rmdir一样,新建、删除目录。
import os print(os.path.exists(‘d:\\234‘)) os.mkdir(‘d:\\234‘) print(os.path.exists(‘d:\\234‘)) os.rmdir(‘d:\\234‘) print(os.path.exists(‘d:\\234‘))
输出结果:
False True False
6.os.listdir
import os print(os.listdir(‘d:\\’))
输出结果:
[‘$RECYCLE.BIN‘, ‘360安全浏览器下载‘, ‘BaiduNetdiskDownload‘, ‘dameware7.5.5‘, ‘MSOCache‘, ‘Office_2013_X64‘, ‘Program Files‘, ‘Program Files (x86)‘, ‘python‘, ‘System Volume Information‘, ‘Users‘]
os.listdir()函数以列表的形式返回结果,输出该路劲下所有的目录。
7.os.remove和os.rename
os.remove()删除文件,os.rename(oldname,newname)重命名文件
import os
print(os.path.exists(‘d:\\python.txt‘))os.rename(‘d:\\python.txt‘,‘d:\\python123.txt‘)print(os.path.exists(‘d:\\python123.txt‘))print(os.path.exists(‘d:\\python.txt‘))os.remove(‘d:\\python123.txt‘)print(os.path.exists(‘d:\\python123.txt‘))
输出结果:
True True #os.rename()把python.txt重名为python123.txt False #python.txt已被重名为python123.txt False #python已被os.remove()删除
8.os.stat()
import os print(os.stat(‘d:\\‘))
输出结果:
os.stat_result(st_mode=16895, st_ino=1407374883553285, st_dev=731043, st_nlink=1, st_uid=0, st_gid=0, st_size=4096, st_atime=1505912747, st_mtime=1505912747, st_ctime=1505665043)
9.os.system()
os.system()输出Linux 命令。
10.os.path.abspath()
os.path.abspath()输出绝对路径
import os
print(os.getcwd())print(os.path.abspath(‘234.txt‘))os.chdir(‘d:\\‘)print(os.path.abspath(‘234.txt‘))
输出结果:
E:\Len_Pyt #当前路径 E:\Len_Pyt\234.txt #输出绝对路径 d:\234.txt #修改d:\\后,输出绝对路径
11.os.path.split(),os.path.dirname(),os.path.basename()
os.path.split() 将path分割成目录和文件名的二元组返回
os.path.dirname() 返回path的目录
os.path.basename() 返回path最后的文件名
12.os.path.exists(),os.path.isfile(),os.path.isdir(),os.path.isabs()
依次判断路径是否存在,是否是文件,是否是目录,是否绝对路劲,返回布尔值。
13.os.path.getatime()#获取路径最后存取时间
os.path.getmtime()#获取路径最后修改时间
sys模块:
sys.argv #获取脚本名后的参数 sys.exit(n) #调用sys.exit(n)
可以中途退出程序,当参数非0时,会引发一个SystemExit
异常,从而可以在主程序中捕获该异常。 sys.path() #获取所有python路径 sys.path.insert() #插入python模块 sys.platfrom() #获取当前平台
sys.argv
: 实现从程序外部向程序传递参数。sys.exit([arg])
: 程序中间的退出,arg=0为正常退出。sys.getdefaultencoding()
: 获取系统当前编码,一般默认为ascii。sys.setdefaultencoding()
: 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding(‘utf8‘),此时将系统默认编码设置为utf8。(见设置系统默认编码 )sys.getfilesystemencoding()
: 获取文件系统使用编码方式,Windows下返回‘mbcs‘,mac下返回‘utf-8‘.sys.path
: 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。sys.platform
: 获取当前系统平台。sys.stdin,sys.stdout,sys.stderr
: stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们