文章目录
- 1、os模块简介
- 2、os模块中常用的属性和函数
- 3 os.path相关
- 3.1 os.path.split(path)
- 3.2 os.path.abspath(path)
- 3.3 os.path.dirname(path)
- 3.4 os.path.basename(path)
- 3.5 os.path.exists(path)
- 3.6 os.path.isabs(path)
- 3.7 os.path.isfile(path)
- 3.8 os.path.isdir(path)
- 3.9 os.path.join(path1,[path2],[path3])
- 3.10 os.path.getatime(path)
- 3.11 os.path.getmtime(time)
- 3.12 os.popen('ls')
- 3.13 os.path.splitext()
- 4 遍历目录
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')
2.5 os.removedirs()
-
os.removedirs()
:函数 -
若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推;
>>> os.removedirs('dir_1/dir_2')
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']
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']