python之os模块
Posted 心之所动,就随风去吧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之os模块相关的知识,希望对你有一定的参考价值。
常用os模块工具:
shell变量 os.environ
运行程序 os.system, os.popen, os.execv, os.spawnv
派生进程 os.fork, os.pipe, os.waitpid, os.kill
文件描述符、文件锁 os.read, os.write, os.open
文件处理 os.remove, os.rename, os.mkfifo, os.mkdir, os.rmdir
管理工具 os.getcwd, os.chdir, os.chmod, os.getpid, os.listdir, os.access
移植工具 os.sep, os.pathsep, os.curdir, os.path.split, os.path.join
路径名工具 os.path.exists(‘path‘), os.path.isdir(‘path‘), os.path.getsize(‘path‘)
管理工具
os.getcwd 返回当前工作的目录,脚本所打开的目录
os.chdir 改变当前目录
os.getpid 返回调用函数的进程的pid
>>> os.getcwd()
‘/Users/yan‘
>>> os.path.abspath(‘‘) #空字符串代表当前工作目录
‘/Users/yan‘
>>> os.path.abspath(‘tmp‘) #扩展为当前工作目录的完整路径名
‘/Users/yan/tmp‘
>>> os.path.abspath(‘/Desktop/work‘)
‘/Desktop/work‘
>>> os.path.abspath(‘.‘) #扩展相对路径语法
‘/Users/yan‘
>>> os.path.abspath(‘..‘)
‘/Users‘
>>> os.path.abspath(‘../Desktop‘)
‘/Users/Desktop‘
可移植的常量
os.pathsep, os.sep, os.pardir, os.curdir, os.linesep
os.sep是python底层运行平台所采用的目录组分隔符,在不同的操作系统下显示不同。path.split(os.sep)可以将各系统
的目录进行处理。
常见os.path工具
检查文件类型(os.path.isdir, os.path.isfile)
测试文件是否存在(os.path.exists)
获取文件大小(os.path.getsize)
os.path.split将文件名从它的目录路径中剥离开
os.path.join则将它们合并
>>> pathname=r‘/Library/Frameworks/Python.framework‘
>>> pathname.split(os.sep)
[‘‘, ‘Library‘, ‘Frameworks‘, ‘Python.framework‘]
>>> os.path.split(pathname)
(‘/Library/Frameworks‘, ‘Python.framework‘)
>>> os.path.join(‘/Library/Frameworks‘, ‘Python.framework‘)
‘/Library/Frameworks/Python.framework‘
os.path.dirname、os.path.basename都调用返回了split返回结果的前两项,而os.path.splitext剥离文件扩展名
>>> os.path.dirname(pathname)
‘/Library/Frameworks‘
>>> os.path.basename(pathname)
‘Python.framework‘
>>> os.path.splitext(r‘/Library/Frameworks/Python.framework‘)
(‘/Library/Frameworks/Python‘, ‘.framework‘)
os模块在脚本里面运行shell命令
os.system 在python脚本中运行shell脚本,也可以运行其他python脚本,通常会阻塞,在命令行末尾加后台运算符&即可。
os.popen 运行shell命令并与其输入或输出流相连接
>>> os.system(‘cat some.py‘)
#!/usr/bin/evn python
import sys
text = sys.stdin.read()
words = text.split()
wordcount = len(words)
print(wordcount)
0 #退出状态
>>> os.system(‘python test2.py‘)
hello!
0
>>> os.popen(‘pwd‘).readlines()
[‘/home/work/open-falcon
‘]
subprocess模块可以实现与os.system和os.popen相同的效果,它要求更多的代码,但对流的连接和使用更完善。
>>> import subprocess
>>> subprocess.call(‘pwd‘)
/home/work/open-falcon
0
>>> pipe = subprocess.Popen(‘pwd‘, stdout=subprocess.PIPE)
>>> pipe.communicate()
(b‘/home/work/open-falcon
‘, None)
>>> pipe.returncode
0
os模块其他工具
os.environ 获取和设置shell环境变量
os.fork 在类unix系统下派生新的子进程
os.pipe 负责程序间通信
os.execlp 启动新程序
os.sapwnv 启动带有底层控制的新程序
os.open 打开基于底层描述符文件
os.mkdir 创建新的目录
os.mkfifo 创建新的命名管道
os.stat 获取文件底层信息
os.remove 根据路径名删除文件
os.walk 将函数或循环应用于整个目录树的各部分
os模块提供了一套文件处理调用,如open、read和write,但都涉及文件底层访问,通常使用内建函数open,而不是os模块。
以上是关于python之os模块的主要内容,如果未能解决你的问题,请参考以下文章