(三)os模块
来源:互联网 发布:淘宝自定义区怎么设置 编辑:程序博客网 时间:2024/05/21 15:39
os是python的两大核心系统模块之一,另一个是sys模块。它包含了所有C中常用的系统调用和命令脚本。包括目录,进程,命令行变量,诸如此类。从技术上说,os模块提供了POSIX工具(跨平台的系统调用)和一个与平台无关的目录处理子模块os.path。从操作上说,os模块提供了访问计算机系统调用的接口:引用了os和os.path模块的脚本可以在任意平台上运行。除此之外,os还专门为某些平台提供服务工具(比如,在Unix上的低级进程调用);总的来说,os模块是跨平台的。
os
查看os的属性名
dir(os)
管理工具
os.getpid() 获取os调用进程的id
os.getcwd() 获取当前工作目录(current working directory)
os.chdir(dir) 改变当前工作目录
os.startfile(filename) 打开一个文件
os.startfile("webpage.html") # open file in your web browseros.startfile("document.doc") # open file in Microsoft Wordos.startfile("myscript.py") # run file with Python
可移植常量
os.pathsep 目录间隔符(windows/DOS下为分号,Unix为冒号)
os.sep 目录成分间隔符(windows下为'\',Unix为'/')
os.pardir 上层目录
os.curdir 当前目录
os.linesep 行分隔符(windows下为'\r\n')
运行命令行
os.system 在python脚本中运行命令行指令,返回的是命令行的执行状态(0表示成功,1表示失败)
os.popen 运行命令行指令,创建一个仿文件对象(file-like object)。默认的情况下创建模式为'r',是只读的,要支持写入,需要添加'w'模式(第六节会探讨os.popen的重定向)
>>> f = os.popen('echo hello')#f = os.popen('echo hello','r')>>> f.read()'hello\n'
subprocess模块
这个模块提供运行命令行指令的接口,比os.system和os.popen更灵活
subprocess.call('cmd /C "command line"')#和os.system功能一样subprocess.call(cmdLine, shell = False)#shell默认值为False,为True表示使用命令解析器(如MS-DOS)pipeObject = subprocess.Popen(cmdLine, stdout = subprocess.PIPE,shell = False)#输出流使用subprocess.PIPE管道pipeObject.communicate()#返回二元组,第一个元素是执行的结果,第二个元素是NonepipeObject.returncode()#命令执行的状态码(0表示成功)pipeObject.stdout#仿文件对象,存储命令执行结果pipeObject.wait()#等待命令执行结束,返回的是执行状态码(0表示成功)
缺陷
虽然os.system,os.popen,subprocess.call和subprocess.Popen接口是可移植的,但是运行的指令不一定是可移植的。所以它们的可移植性会打折扣;在程序中直接运行另一个脚本程序比导入和调用本地函数要慢得多。在运行os.system/os.popen语句时,开启命令行中的脚本程序会另起一个进程;
os.system执行的时候,会堵塞调用者,直到命令行执行结束。为解决这个问题,在linux/Unix系统中,可以在命令行的结尾添加一个'&';在windows的中,使用MS-DOS的start指令可以将命令行在命令解析器中执行(如MS-DOS)。
os.path
查看嵌套模块os.path的属性名
dir(os.path)
os.path.isfile(fullname/name)#是否文件,fullname是完整文件名(如"C:\\file\\1.txt")os.path.isdir(directory)#是否目录os.path.split(fullname)#将完整文件名分割为一个二元组,第一个为文件目录,第二个为文件名os.path.join(directory, name)#将目录和文件名拼接为一个完整文件名os.path.dirname(fullname)#获取完整文件名中的文件目录os.path.basename(fullname)#获取完整文件名中的文件名os.path.splitext(fullname/name)#将文件名和后缀提取出来,拼接为一个二元组os.path.normpath(directory)#如果directory中既有'\'也有'/',则根据当前的操作系统,统一为'\\'或者'/'os.path.abspath(directory)#获取directory所在的绝对目录
- (三)os模块
- python从零开始学习(三)--os模块
- python(os模块)
- Python 模块学习:os模块(转)
- python os.path模块(os.listdir和os._exit())
- os模块
- os 模块
- os模块
- os模块
- os 模块
- os模块
- os 模块
- os模块
- os模块
- os模块
- os模块
- os 模块
- os模块
- JDK环境变量配置
- C++ Unicode检测中文
- selenium+Python获取弹出框内容的提醒
- hdu 2084 解题报告
- CENTOS中文乱码
- (三)os模块
- Android WebView使用Javascript详解
- java解析Json的两种方式
- SqlServer 错误:"SQL Server 无法生成 FRunCM 线程" -- 解决办法
- 《老罗Android》学习之GSON技术(三)
- MYSQL乱码问题
- 在ubuntu得linux环境下安装jdk7以上版本
- JAVA 泛型
- Android 关于内存信息中标题的理解,即Vss Rss Pss Uss