python中的os模块

本文详细介绍了Python的os模块,包括其基本介绍、常用属性和函数如获取工作目录、改变目录、文件和目录操作、os.path相关方法以及如何遍历目录。重点讲解了os.getcwd(),os.chdir(),os.listdir()等函数的使用示例。
摘要由CSDN通过智能技术生成

1、os模块简介

  • OS模块简单的来说它是一个Python的系统编程的操作模块,可以处理文件和目录这些我们日常手动需要做的操作。

    在自动化测试中,经常需要查找操作文件,比如查找配置文件(从而读取配置文件的信息),查找测试报告等等,经常会对大量文件和路径进行操作,这就需要依赖os模块。


2、os模块中常用的属性和函数

  • 常用方法以及描述:

    方法描述
    os.name返回操作系统类型
    os.environ以字典形式返回系统变量
    os.putenv(key, value)改变或添加环境变量
    os.listdir(path=’ : )列表形式列出目录下所有目录和文件名
    os.getcwd()获取当前路径
    os.chdir(path)改变当前工作目录到指定目录
    os.mkdir(path [, mode = 0777 ] ) =0777]) =0777])创建目录
    os.makedirs(path [ mode=0777])递归创建目录
    os.rmdir(path)移除空目录,不能删除有文件的目录
    os.remove(path)移除文件
    os.rename(old, new)重命名文件或目录
    os.stat(path)获取文件或目录属性
    os.chown(path, uid, gid)改变文件或目录所有者
    os.chmod(path, mode)改变文件访问权限
    os.symlink(src, dst)创建软链接
    os.unlink(path)移除软继接
    os.getuid()返回当前进程UID
    os.getlogin()返回登录用户名
    os.getpid()返回当前进程ID
    os.kill(pid, sig)发送一个信号给进程
    os.walk(path)目录树生成器,生成一个三组 (dirpath, dirnames, filenames)
    os.system(command)执行shell命令,不能存储结果
    os.popen(command [, mode=‘r’ [, bufsize]])打开管道来自shell命令,并返回一个文峳对象

2.1 os.getcwd()

  • os.getcwd():函数

  • 查看当前所在目录的路径:

    >>> import os
    >>> os.getcwd()   # pwd
    
    '/Users/mengzhichao/Desktop/test'
    

2.2 os.chdir()

  • os.chdir():函数

  • 切换目录

    >>> os.chdir('/Users/mengzhichao/Desktop/test/src')
    # cd /Users/mengzhichao/Desktop/test/src
    >>> os.getcwd() # pwd
    
    '/Users/mengzhichao/Desktop/test/src'
    

2.3 os.curdir、os.pardir

  • os.curdir:属性

    os.pardir:属性

  • 返回当前目录字符串名、返回当前目录的父目录的字符串名;

    >>> os.curdir
    '.'
    >>> os.pardir
    '..'
    

2.4 os.makedirs()

  • os.makedirs():函数

  • 生成一个多层递归目录

    >>> os.makedirs('dir_1/dir_2')
    

    image-20210702144409170

2.5 os.removedirs()

  • os.removedirs():函数

  • 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推;

    >>> os.removedirs('dir_1/dir_2')
    

    20210702xbnnLQ

2.6 os.mkdir()

  • os.mkdir():函数

  • 只能创建一个目录

    >>> os.mkdir('test')
    

2.7 os.rmdir()

  • os.rmdir():函数

  • 删除一个目录,若目录不为空则无法删除,报错

    >>> os.rmdir('test')
    

2.8 os.listdir()

  • os.listdir():函数

  • 显示指定目录下,所有的文件和子目录,包括隐藏文件;

    >>> dir_list = os.listdir('/users')
    >>> dir_list
    ['.localized', 'Shared', 'mengzhichao']
    

    20210702VhveDe

2.9 os.remove()

  • os.remove():函数

  • 删除文件但不能删除文件夹

    os.remove('test.txt')
    

2.10 os.stat()

  • os.stat():函数

  • 获取文件/目录信息,并可以获取到文件的大小;

    >>> info = os.stat('test.txt')
    >>> print(info)
    os.stat_result(st_mode=33188, st_ino=5764928, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=98, st_atime=1625209429, st_mtime=1625209405, st_ctime=1625209405)
    >>> info.st_size
    98
    

2.11 os.sep

  • os.sep:属性

  • 输出操作系统指定的路径分隔符,如:windows 为‘\’,Linux为‘/’;

    >>> os.sep
    '/'
    

2.12 os.pathsep

  • os.pathsep:属性

  • 输出用于分割文件路径的字符串;

    >>> os.pathsep
    ':'
    

2.13 os.system()

  • os.system():函数

  • 运行shell命令,直接显示(相当于启动一个全新的shell,然后去执行那条命令,命令执行完成过后,shell直接退出);

    >>> os.system('cat test.txt')
    import pandas as pd
    import numpy as np
    for i in range(10):
    	print(‘测试下,不必当真’)
    0
    

2.14 os.environ

  • os.environ:属性

  • 获取操作系统的环境变量;

    >>> os.environ
    environ({'MANPATH': '/opt/local/share/man:/usr/local/share/man:', 'TERM_PROGRAM': 'Apple_Terminal', 'HOMEBREW_CELLAR': '/usr/local/Cellar', '_': '/Users/mengzhichao/anaconda3/bin/python'})
    

2.15 os.rename()

  • os.rename()方法

  • 重命名文件

    >>> import os
    >>> os.getcwd()
    '/Users/mengzhichao/Desktop/文件/16、python代码/Sample_Code/1、Package/save'
    >>> os.listdir()
    ['10、Package_argparse.png', 'wordcloud.jpg']
    
    """重命名文件"""
    >>> os.rename('wordcloud.jpg','wordcloud.png')
    >>> os.listdir()
    ['10、Package_argparse.png', 'wordcloud.png']
    

3 os.path相关

  • 相关方法以及描述:

    方法描述
    os.path.basename(path)返回最后一个文件或目录名
    os.path.dirname(path)返回最后一个文件所属目录
    os.path.abspath(path)返回一个绝对路径
    os.path.exists(path)判断路径是否存在,返回布尔值
    os.path.isdir(path)判断是否是目录
    os.path.isfile(path)判断是否是文件
    os.path.islink(path)判断是否是链接
    os.path.ismount(path)判断是否挂载
    os.path.getatime(filename)返回文件访问时间截
    os.path.getctime(filename)返回文件变化时间戰
    os.path.getmtime(filename)返回文件修改时间戰
    os.path.getsize(filename)返回文件大小,单位字节
    os.path.join(a, *p)加入两个或两个以上路径,以正斜杜"/"分隔。常用于拼接路径
    os.path.split(分隔路径名
    os.path.splitext(分隔扩展名

3.1 os.path.split(path)

  • os.path.split(path)函数

  • 将path分割成目录和文件名二元组返回;

    >>> os.path.split('/Users/mengzhichao/Desktop/test/src/test.txt')
    ('/Users/mengzhichao/Desktop/test/src', 'test.txt')
    

3.2 os.path.abspath(path)

  • os.path.abspath(path):函数

  • 返回path规范化的绝对路径;函数

    >>> os.path.abspath('test')
    '/Users/mengzhichao/Desktop/test/src/test'
    

3.3 os.path.dirname(path)

  • os.path.dirname(path):函数

  • 返回path的目录;

    >>> os.path.dirname('/Users/mengzhichao/Desktop/test/src/test.txt')
    '/Users/mengzhichao/Desktop/test/src'
    

3.4 os.path.basename(path)

  • os.path.basename(path):函数

  • 返回path最后的文件名(一个绝对路径只返回最后的文件名);

    >>> os.path.basename('abc')
    'abc'
    >>> os.path.basename('/test/123/abc')
    'abc'
    

3.5 os.path.exists(path)

  • os.path.exists(path):函数

  • 判断路径是否存在,如果path存在,返回True;如果不存在,返回Flase;

    >>> os.path.exists('/Users/mengzhichao/Desktop/test/src')
    True
    >>> os.path.exists('/Users/mengzhichao/Desktop/test/src/123')
    False
    

3.6 os.path.isabs(path)

  • os.path.isabs(path):函数

  • 判断是否是绝对路径,如果是,则返回True;

    >>> os.path.isabs('./test.txt')
    False
    >>> os.path.isabs('/Users/mengzhichao/Desktop/test/src')
    True
    

3.7 os.path.isfile(path)

  • os.path.isfile(path):函数

  • 判断是否是一个文件,如果是则返回True,否则返回False;

    >>> os.path.isfile('./test.txt')
    True
    >>> os.path.isfile('../test')
    False
    

3.8 os.path.isdir(path)

  • os.path.isdir(path):函数

  • 判断是否是一个存在的目录(注意是目录,传入已经存在的文件也会返回False);

    >>> os.path.isdir('/Users/mengzhichao/Desktop/test/src/test.txt')
    False
    >>> os.path.isdir('/Users/mengzhichao/Desktop/test/src')
    True
    

3.9 os.path.join(path1,[path2],[path3])

  • os.path.join(path1,[path2],[path3]):函数

  • 将路径和文件名分为一个列表中的两个元素,将它们拼起来,若其中有绝对路径,则之前的path将会被删除.

    >>> os.path.join('/test/','hello.txt')
    '/test/hello.txt'
    >>> os.path.join('/test/123','hello.txt')
    '/test/123/hello.txt'
    

3.10 os.path.getatime(path)

  • os.path.getatime(path):函数

  • 返回path所指向的文件或者目录的最后存取时间;

    >>> os.path.getatime('/Users/mengzhichao/Desktop/test')
    1625209180.4501557
    

3.11 os.path.getmtime(time)

  • os.path.getmtime(time):函数

  • 返回path所指向的文件或者目录的最后修改时间;

    >>> os.path.getmtime('/Users/mengzhichao/Desktop/test')
    1625207886.1682236
    

3.12 os.popen(‘ls’)

  • os.popen('ls'):函数

  • 相当于打开了一个临时的文件存储打开的目录(可以赋给变量,字符串的形式);

    >>> os.chdir('/users/mengzhichao/')
    >>> a = os.popen('ls -lha').read()
    >>> print(a)
    total 1323304
    drwxr-xr-x+  62 mengzhichao  staff   1.9K  7  2 15:28 .
    drwxr-xr-x    5 root         admin   160B  4  2 17:10 ..
    -r--------    1 mengzhichao  staff     9B  4 20 11:48 .CFUserTextEncoding
    -rw-r--r--@   1 mengzhichao  staff    22K  7  1 17:40 .DS_Store
    drwx------    8 mengzhichao  staff   256B  7  2 14:52 .Trash
    drwxr-xr-x    3 mengzhichao  staff    96B  4 29 16:21 .anaconda
    drwxr-xr-x    3 mengzhichao  staff    96B  4  2 21:12 .astropy
      
    eg...
    

3.13 os.path.splitext()

  • os.path.splitext():函数

  • 可以用来获取文件后缀

    >>> os.path.splitext('/tmp/a.txt')
    ('/tmp/a', '.txt')
    >>> os.path.splitext('/tmp/a.txt')[1]
    '.txt'
    

4 遍历目录

  • >>> for dirpath,dirname,filename in os.walk('/tmp'):
    ...      print(f"目录路径:{dirpath},目录名:{dirname},文件名:{filename}")
    ... 
    目录路径:/tmp,目录名:['com.google.Keystone', 'powerlog', 'com.sogou.inputmethod', 'com.apple.launchd.B99za8vbj2', 'com.apple.launchd.h3hyNRLCcO'],文件名:[]
    目录路径:/tmp/com.google.Keystone,目录名:[],文件名:['.keystone_system_install_lock', '.keystone_install_lock']
    目录路径:/tmp/powerlog,目录名:[],文件名:[]
    目录路径:/tmp/com.sogou.inputmethod,目录名:[],文件名:[]
    目录路径:/tmp/com.apple.launchd.B99za8vbj2,目录名:[],文件名:['Listeners']
    目录路径:/tmp/com.apple.launchd.h3hyNRLCcO,目录名:[],文件名:['Render']
    
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值