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\n']

 

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\n', 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模块。

 

 

 

posted @ 2018-10-30 22:24  风住  阅读(550)  评论(0编辑  收藏  举报