Python Module_os_操作系统
目录
前言
Python标准库中的OS模块,提供一种可移植的方式(程序与平台无关)来使用依赖于操作系统的功能。简而言之,os模块提供了许多能够直接操纵不同的操作系统的Python接口。一个操作系统所能提供的常用命令行接口,在os模块中基本都能做到。本篇主要是对os模块中常用属性和方法的记录。想了解更详细的使用推荐使用Python中文文档,点这里。
软件环境
- 系统
- RHEL 7
- 软件
- Pyhon 27
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中路径以':'来分隔
Other
os.curdir 返回当前目录: (‘.’)
os.pardir 获取当前目录的父目录字符串名:(‘..’)
os.R_OK/os.W_OK/os.X_OK 文件权限模式。他们的值分别是:4/2/1
os.environ 获取系统环境变量
os模块内建方法
文件或目录的路径操作方法
os.getcwd() 获取当前工作目录
获取当前工作目录的绝对路径。
>>> os.getcwd()
'/opt/workspace'`
os.path.exists() 判断一个路径是否存在
如果path存在,返回True;如果path不存在,返回False。常用于在对一个文件做操作之前的判断依据。
>>> os.path.exists("/opt/workspace/tab.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")
417
>>> os.path.getsize("testMkdir")
6
os.stat() 获取文件/目录信息
>>> os.stat("/opt")
posix.stat_result(st_mode=16877, st_ino=164, st_dev=64768L, st_nlink=4, st_uid=0, st_gid=0, st_size=31, st_atime=1460805310, st_mtime=1460805067, st_ctime=1460805067)
>>> os.stat("/opt/workspace/tab.py")
posix.stat_result(st_mode=33152, st_ino=203490123, st_dev=64768L, st_nlink=1, st_uid=0, st_gid=0, st_size=417, st_atime=1460805594, st_mtime=1460805500, st_ctime=1460805500)
os.listdir() 获取指定目录下的文件和目录名列表
listdir(…)
listdir(path) -> list_of_strings
Return a list containing the names of the entries in the directory.
path: path of directory to list
The list is in arbitrary order.
NOTE:It does not include the special
entries ‘.’ and ‘..’ even if they are present in the directory.
注意:路径并不能含有’.’ or ‘..’ 。
>>> dirName = "/opt/workspace"
>>> os.listdir(dirName)
['ifTest.py', 'forTest.py', 'forTest1.py', 'whileTest.py', 'continueTest.py', 'pyModule.py', 'randomTest.py', 'funcTest1.py', '.servStatus.py.swp', 'forTest2.py', 'ifTest1.py', 'pyModule.pyc', 'tab.py', 'tab.pyc', 'choiceTest.py', 'funTest2.py', 'funcTest3.py']
os.walk() 生成一个目录树下的所有文件名
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
1.top表示要遍历的目录树的路径
2.topdown的默认值是”True”,表示首先返回目录树下的文件,然后在遍历目录树的子目录.Topdown的值为”False”时,则表示先遍历目录树的子目录,返回子目录下的文件,最后返回根目录下的文件
3.onerror的默认值是”None”,表示忽略文件遍历时产生的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历
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.path.walk(top,func,arg) 生成一个目录树下的所有文件名
1.top表示需要遍历的目录树的路径
2.func表示回调函数,对遍历路径进行处理.所谓回调函数,是作为某个函数的参数使用,当某个时间触发时,程序将调用定义好的回调函数处理某个任务.回调函数必须提供3个参数:第1个参数为walk()的参数tag,第2个参数表示目录列表,第3个参数表示文件列表
3.arg是传递给回调参数func的元组.回调函数的一个参数必须是arg,为回调函数提供处理参数.参数arg可以为空
def visitDir(arg,dirname,names):
for filespath in names:
print os.path.join(dirname,filespath)
path="/opt"
os.path.walk(path,VisitDir,())
注意:os.path.walk()与os.walk()产生的文件名列表并不相同。os.path.walk()产生目录树下的目录路径和文件路径,而os.walk()只产生文件路径
os.mkdir() 创建一个目录
>>> os.mkdir("testMkdir")
>>> os.listdir(os.getcwd())
['tab.py', 'ipython-4.1.2.tar.gz', 'ipython-4.1.2', 'traitlets-4.1.0', 'ipython_genutils-0.1.0', 'pexpect-4.0.1', 'ptyprocess-0.5', 'pickleshare-0.5', 'path.py-8.1.1', 'testMkdir']
os.makedirs(‘dirname1/dirname2’) 递归创建多层目录
>>> os.makedirs("/opt/workspace/dirname1/dirname2")
>>> os.listdir("/opt/workspace")
['tab.py', 'ipython-4.1.2.tar.gz', 'ipython-4.1.2', 'traitlets-4.1.0', 'ipython_genutils-0.1.0', 'pexpect-4.0.1', 'ptyprocess-0.5', 'pickleshare-0.5', 'path.py-8.1.1', 'testMkdir', 'dirname1']
os.rmdir() 删除指定的目录
>>> os.rmdir("testDir")
os.removedirs(‘dirname1’) 递归删除目录
若dirname2为空,则删除,并递归到上一级dirname1目录,如若也为空,则也删除,依此类推。
>>> os.removedirs("/opt/workspace/dirname1/dirname2")
os.remove() 删除一个文件
注意:只能够删除文件,而不能删除一个目录。
>>> os.remove('ifTest.py')
os.rename() 重命名一个文件或目录
>>> os.rename("test","JustTest") #test为一个文件
>>> os.rename("ipython-4.1.2","sdasd") #ipython-4.1.2为一个目录
os.chdir() 改变当前脚本工作目录
>>> os.getcwd()
'/opt/workspace'
>>> os.chdir("/")
>>> os.getcwd()
'/'
执行系统指令的方法
os.system() 执行Shell指令
可以执行不同平台下的Shell指令,显示执行结果并返回执行状态。若为Windows,则为CMD;若是Linux,则为Bash。
注意:返回的是执行状态,执行结果只会显示在终端上。
os.system(…)
os.system(command) -> exit_status
Execute the command (a string) in a subshell.
>>> 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.utime() 修改时间属性
>>> stinfo = os.stat("/opt/workspace/tab.py")
>>> stinfo.st_atime
1460805594.4710202
>>> stinfo.st_mtime
1460805500.175018
>>>os.utime('/opt/workspace/tab.py',(1375448978,1369735977))
>>> stinfo = os.stat("/opt/workspace/tab.py")
>>> stinfo.st_atime
1375448978.0
>>> stinfo.st_mtime
1369735977.0
修改文件或目录权限的方法
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
Other
os.path.commonprefix(list) 返回list中,所有path共有的最长的路径,从左向右,相同字符
os.path.abspath(path) 返回path规范化的绝对路径
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.normcase(path) 在Linux下,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为反斜杠
Python Module_os_操作系统的更多相关文章
- python获取操作系统平台、版本及架构
platform模块提供了底层系统平台的相关信息 系统架构 32位还是64位 >>>import platform >>> platform.architectur ...
- Python与操作系统有关的模块
Os模块 Python的标准库中的os模块主要涉及普遍的操作系统功能.可以在Linux和Windows下运行,与平台无关.os.sep 可以取代操作系统特定的路径分割符.os.name字符串指示你正在 ...
- 33.python之操作系统,进程,线程
转载:https://www.cnblogs.com/yuanchenqi/articles/6248025.html 操作系统 一 为什么要有操作系统? 现代计算机系统是由一个或者多个处理器,主存, ...
- python 判断操作系统类型
#!/bin/python # import platform def TestPlatform(): print ("----------Operation System--------- ...
- Python判断操作系统类型
代码: import platform def TestPlatform(): print ("----------Operation System--------------------- ...
- python基础——操作系统简介
不同应用领域的主流操作系统 l 桌面操作系统 l 服务器操作系统 l 嵌入式操作系统 l 移动设备操作系统 桌面操作系统 Windows系列 用户群体很大 MacOS 适合于开发人员 Linu ...
- python 32 操作系统与进程
目录 1. 操作系统 1.1 作用 1.2 操作系统的发展 2. 进程的理论 2.1 相关名词 2.2 进程的创建 2.3 进程的状态: 1. 操作系统 管理.控制.协调计算机硬件与软件资源的计算 ...
- python判断操作系统
https://www.crifan.com/python_get_current_system_os_type_and_version_info/ 参考:https://stackoverflow. ...
- python 判断操作系统以及操作系统版本号
>>> import platform >>> platform.platform() 'Darwin-17.7.0-x86_64-i386-64bit' > ...
随机推荐
- cx_Oracle 操作oracle数据库
cx_Oracle 操作oracle数据库 class MyOracle(): def __init__(self, host_name="ip", port=1521, sid= ...
- 利用sql报错帮助进行sql注入
我们可以利用sql报错帮助进行sql注入,这里以sql server 为例: sql查询时,若用group by子句时,该子句中的字段必须跟select 条件中的字段(非聚合函数)完全匹配,如果是se ...
- nginx的rewrite
nginx服务的rewrite nginx后端服务的指令 1)upstream指令 :设置后端服务器组的主要指令 Upstream name {} 2)server指令:用于设定组内的服务器 3)Ip ...
- mysql5.7二进制包进行多实例安装
一.需求 在一台服务器上安装mysql5.7,并且部署两个实例:3306用于本机主库,3307用于其他MYSQL服务器的从库 二.下载mysql二进制包 [root@push-- src]# -lin ...
- 带gcd大数模板
int ten[4] = {1,10,100,1000}; typedef struct BigNumber { int d[1200]; BigNumber(string s) { int i, j ...
- 牛客假日团队赛5 K 金币馅饼 (DP 基础题)
链接:https://ac.nowcoder.com/acm/contest/984/K 来源:牛客网 金币馅饼 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...
- 有理想的中国IT企业,正在全球攻城略地 - 阅读笔记
文章来源:https://mp.weixin.qq.com/s/xc5Uqe4WmEEgI03dPR4Orw 中资手机崛起 大部分国人对传音不熟悉,这家深圳公司由前波导高管创立,是非洲手机市场的老大. ...
- 使用RegisterPointerInputTarget时的一些注意事项
RegisterPointerInputTarget :允许调用者注册一个目标窗口,指定类型的所有指针输入都重定向到该窗口. 要使用它必须使 UIAccess = true,见下图 在设置完之后,需要 ...
- python-进程、线程与协程
基础概念 进程 是一个执行中的程序,即将程序装载到内存中,系统为它分配资源的这一过程.进程是操作系统资源分配的基本单位. 每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text regio ...
- oracle 创建表的规则
1.表明首字母 应该为字母 2.表名的最大长度为30个字符 3.不能使用oracle保留字和关键字来作表名 4.同一用户下的不同表不能具有相同的名称 5.可以使用下划线.数字和字母,但不能使用空格与单 ...