python笔记---OS模块内建方法

本文介绍了Python的OS模块,包括路径操作方法如获取当前工作目录、判断路径是否存在、文件或目录信息的查询与修改,以及执行系统指令和修改文件权限的方法。这些接口提供了与操作系统交互的统一方式,适用于不同平台。
摘要由CSDN通过智能技术生成

前言

Python标准库中的OS模块,提供一种可移植的方式(程序与平台无关)来使用依赖于操作系统的功能。简而言之,os模块提供了许多能够直接操纵不同的操作系统的Python接口。一个操作系统所能提供的常用命令行接口,在os模块中基本都能做到。

软件环境

  • 系统版本:CentOS release 6.8
  • Python版本:Python 3.5.2

os模块内建方法

文件或目录的路径操作方法:

os.getcwd() 获取当前工作目录

获取当前工作目录的绝对路径

>>> import os
>>> os.getcwd()
'/opt/workspace'
os.path.exists() 判断一个路径是否存在

如果path存在,返回True;如果path不存在,返回False。常用于在对一个文件做操作之前的判断依据。

>>> os.path.exists('/opt/workspace/tap.py')
True
os.path.isfile() 判断指定对象是否为文件

是返回True,否则False

>>> os.path.isfile('tab.py')
True
>>> os.path.isfile('testMkdir')
False
os.path.isdir() 判断指定对象是否为目录

是True,否则False。

>>> os.path.isdir('testMkdir')
True
>>> os.path.isdir('tab.py')
False
os.path.split() 分裂上层目录和下层目录|文件

生成一个包含两个元素的元组。

>>> os.path.split('/opt/workspace/tab.py')
('/opt/workspace', 'tab.py')                   #tab.py为文件
>>> os.path.split('/opt/workspace/testMkdir')  #testMkdir为目录
('/opt/workspace', 'testMkdir')
os.path.dirname(path) 返回path的目录

就是os.path.split(path)的第一个元素

>>> os.path.dirname('/opt/workspace/tab.py')     # 本质 == os.path.split('/opt/workspace/tab.py')[0]
'/opt/workspace'
os.path.basename(path) 返回path最后的文件|目录名

即os.path.split(path)的第二个元素。
注意:如何路径以’/’或’\’结尾,就会返回空值。

>>> os.path.basename('/opt/workspace/tab.py')  #本质 == os.path.split(''/opt/workspace/tab.py')[1]
'tab.py'
>>> os.path.basename('/opt/workspace/testMkdir')
'testMkdir'
>>> os.path.basename('/opt/workspace/')
''
os.path.join() 合并目录名和文件名|目录名
>>> os.path.basename('/opt/workspace/tab.py')  
'tab.py'
>>> os.path.dirname('/opt/workspace/tab.py')
'/opt/workspace'
>>> os.path.join(os.path.dirname('/opt/workspae/tab.py'),os.path.basename('/opt/workspace/tab.py'))
'/opt/workspae/tab.py'
os.path.splitext() 分离文件名和扩展名
>>> os.path.splitext('tab.py')
('tab', '.py')
os.path.abspath() 获得绝对路径

返回一个文件或目录的绝对路径,可以很方便的得到一个文件或目录的绝对路径。

>>> os.path.abspath('tab.py')
'/opt/workspace/tab.py'

文件或目录信息的查询、创建、删除、修改

os.path.getsize() 获得文件或目录的大小
>>> os.path.getsize('tab.py')
5
>>> os.path.getsize('testMkdir')
4096
os.stat() 获取文件/目录信息
>>> os.stat('/opt')
os.stat_result(st_mode=16877, st_ino=260612, st_dev=64768, st_nlink=6, st_uid=0, st_gid=0, st_size=4096, st_atime=1468371823, st_mtime=1468371226, st_ctime=1468371226)
>>> os.stat('/opt/workspace/tab.py')
os.stat_result(st_mode=33188, st_ino=272818, st_dev=64768, st_nlink=1, st_uid=0, st_gid=0, st_size=5, st_atime=1468371482, st_mtime=1468376033, st_ctime=1468376033)
os.listdir() 获取指定目录下的文件和目录名列表
>>> dirName = '/opt/workspace'
>>> os.listdir(dirName)
['testMkdir', 'tab.py']
os.walk() 生成一个目录树下的所有文件名
for root, dirs, files in os.walk("/opt", topdown=False):
    for name in files:
        print(os.path.join(root, name)) #打印文件绝对路径
    for name in dirs:
        print(os.path.join(root, name)) #打印目录绝对路径
os.mkdir() 创建一个目录
>>> os.mkdir('testMkdir')
os.makedirs(‘dirname1/dirname2’) 递归创建多层目录
>>> os.makedirs('/opt/workspace/dirname1/dirname2')
os.rmdir() 删除指定的目录 只能删除空目录
>>> os.rmdir('dirname1/dirname2')
os.removedirs(‘dirname1’) 递归删除目录

若dirname2为空,则删除,并递归到上一级dirname1目录,如若也为空,则也删除,依此类推。

>>> os.removedirs('/opt/workspace/dirname1/dirname2')
os.remove() 删除一个文件

注意:只能够删除文件,而不能删除一个目录。

>>> os.remove('test.py')
os.rename() 重命名一个文件或目录
>>> os.rename('test','JustTest')       #test为一个文件
>>> os.rename('dirname1','dirname2')  #dirname1为一个目录
os.chdir() 改变当前脚本工作目录
>>> os.getcwd()
'/opt/workspace'
>>> os.chdir('/')
>>> os.getcwd()
'/'

执行系统指令的方法

os.system() 执行Shell指令

可以执行不同平台下的Shell指令,显示执行结果并返回执行状态。若为Windows,则为CMD;若是Linux,则为Bash。
注意:返回的是执行状态,执行结果只会显示在终端上。

>>> result = os.system("ls")
ipython-4.1.2.tar.gz    path.py-8.1.1    ptyprocess-0.5  testMkdir
ipython_genutils-0.1.0  pexpect-4.0.1    sdasd       traitlets-4.1.0
JustTest        pickleshare-0.5  tab.py
>>> result
os.popen() 运行shell命令并生成类文件对象

生成的变量可以赋给变量,再用read()等类文件对象内置方法读取和操作。

>>> result = os.popen("ls")
>>> result.read()
'ipython-4.1.2.tar.gz\nipython_genutils-0.1.0\nJustTest\npath.py-8.1.1\npexpect-4.0.1\npickleshare-0.5\nptyprocess-0.5\nsdasd\ntab.py\ntestMkdir\ntraitlets-4.1.0\n'

修改文件或目录权限的方法

os.access() 查询文件权限模式

一般需要结合os.R_OK/os.W_OK/os.X_OK文件权限模式来处理。

>>> os.access("tab.py",os.W_OK)
True
>>> os.access("tab.py",os.R_OK)
True
>>> os.access("tab.py",os.X_OK)
False 
os.chmod() 改变文件权限模式
>>> os.chmod("tab.py",os.X_OK)
>>> os.access("tab.py",os.X_OK)
True

os模块内建属性

os.name 获取执行平台的类型

操作系统相关模块的名字。目前已经注册以下的名字:’posix’、’nt’、’os2’、’ce’、’java’、’riscos’。
如果执行平台是window,则os.name == “nt”,如果是Linux/Unix,则os.name == ‘posix’。

>>> os.name
'posix'

POSIX :表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX ),POSIX标准定义了操作系统应该为应用程序提供的接口标准,是IEEE为要在各种UNIX操作系统上运行的软件而定义的一系列API标准的总称,其正式称呼为IEEE 1003,而国际标准名称为ISO/IEC 9945。

os.linesep 输出当前平台使用的行终止符

也称之为换行符,windows下为”\t\n”,Linux下为”\n

>>> os.linesep
'\n'

os.sep 输出操作系统特定的路径分隔符

目录层之间的分隔符

>>> os.sep
'/'

os.pathsep 输出用于分割文件路径的字符串

>>> os.pathsep
':'
root@localhost workspace]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/opt/workspace:/root/bin   #在Linux中路径以':'来分隔

os.environ 获取系统环境变量

>>> os.environ
environ({'HISTSIZE': '1000', 'SSH_CLIENT': '10.0.0.1 55924 22', 'PWD': '/opt/workspace', 'LOGNAME': 'root', 'MAIL': '/var/spool/mail/root', 'SHLVL': '1', 'PATH': '/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/tools/:/root/bin', '_': '/usr/local/bin/python3', 'LESSOPEN': '||/usr/bin/lesspipe.sh %s', 'HOME': '/root', 'USER': 'root', 'SSH_CONNECTION': '10.0.0.1 55924 10.0.0.12 22', 'CVS_RSH': 'ssh', 'HISTCONTROL': 'ignoredups', 'G_BROKEN_FILENAMES': '1', 'SSH_TTY': '/dev/pts/0', 'HOSTNAME': 'localhost.localdomain', 'LANG': 'zh_CN.UTF-8', 'SHELL': '/bin/bash', 'OLDPWD': '/root'})

os.getenv()获取具体环境变量

 >>> os.getenv('PATH')
'/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/tools/:/root/bin'

Other

os.curdir 返回当前目录: (‘.’) 
os.pardir 获取当前目录的父目录字符串名:(‘..’) 
os.R_OK/os.W_OK/os.X_OK 文件权限模式。其值分别为:4/2/1 
os.path.commonprefix(list) 返回list中,所有path共有的最长的路径,从左向右,相同字符 
os.path.abspath(path) 返回path规范化的绝对路径 
os.path.isabs(path) 如果path是绝对路径,返回True 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值