zoukankan      html  css  js  c++  java
  • 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模块。

     

     

     

  • 相关阅读:
    大道至简读后感
    机器学习十讲(一)
    第一个TensorFlow的简单例子
    初识深度学习
    如何使用本地的Navicat连接服务器中的Mysql
    阿里云ECS-安装Tomcat
    阿里云ECS-CentOS 8上安装MySQL 8.0
    阿里云ECS--CentOS8安装jdk1.8
    进度报告十(重大技术需求)
    进度报告九 (重大技术需求调研)
  • 原文地址:https://www.cnblogs.com/whych/p/9880018.html
Copyright © 2011-2022 走看看