Python之 os模块

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

1. os.getcwd()

功能:查看当前所在路径

import os
print(os.getcwd())
2. os.listdir(path)

列举指定目录下所有的文件名,若没有指定则默认返回当前目录下,以列表的方式返回(无序)

import os
print(os.listdir("c:\file"))
3. os.path.abspath(path)

功能:将当前的绝对路径与指定path进行路径拼接处理,返回一个新的路径
[不会判断文件是否存在]

import os
print(os.path.abspath(__file__)) # 获取当前py文件的绝对路径
print(os.path.abspath("demo.py"))#将demo.py文件与当前目录拼接,返回一个新目录

练习: 将当前目录下所有文件列举,放于列表中,依次遍历文件,将文件名与当前目录拼接,返回多个新目录

list1 = os.listdir()
for x in list1:
    print(os.path.abspath(x))
4. os.path.split(path)
功能: 将path分解(当前目录下,不包括子目录)为目录与文件部分,返回以元组(元组是有序的)方式返回.
(目录,文件)
其实就是路径的切割处理,以最右边的"\\"来进行切割.
注意:若路径字符串最后一个字符是\,则只有文件夹部分有值,若路径字符串中均无\,
则只有文件名部分有值,若路径字符串有\且不在最后,则文件夹和文件名都有值,且返回的结果不包括\

关于路径中的斜杠(/)与反斜杠(\)
Windows中采用反斜杠(\)作为文件夹之间的分隔符,
Mac和Linux中采用斜杠(/)作为文件夹之间的分隔符。
反斜杠(\)在Python中用于转义,所以用两个 \\ 
import os
print(os.path.split(r"D:\python\file\hello.py"))
#结果
('D:\python\file','hello.py')

print(os.path.split("."))
#结果
('','.')

os.path.split('D:\\pythontest\\ostest\\')
#结果
('D:\\pythontest\\ostest', '')

os.path.split('D:\\pythontest\\ostest')
('D:\\pythontest', 'ostest')

扩展

绝对路径:从根目录文件夹开始
比如Windows从C盘、D盘开始的目录:D:\python\file
若路径以盘符[c:,d:,f:],除了盘符,以"\\"默认也是绝对路径

相对路径:相对于程序当前运行目录
比如Windows下D盘目录:
D:\python\file\文件夹下,还有个file1的文件夹(D:\python\file\file1)
那么这个file1的相对路径就是./file1
以文件开头,或者以"."开头[代表当前目录],以".."开头[代表上一级目录]
import os

filepath= os.path.abspath(__file__) # 获取当前py文件的绝对路径
print(filepath)

dir_path = os.path.split(os.path.abspath(__file__))[0] # 获取当前py文件所在的目录
print(dir_path )
5. os.path.join(path1,path2,…)

将path进行组合,若其中有绝对路径,则之前的path将会被删除.

 import os
 os.path.join(r"d:\python\test",'hello.py')
#将hello.py与d:\python\test拼接,返回新路径
'd:\pyhton\test\hello.py'

os.path.join(r"d:\python\test",'demo')
#将demo与d:\python\test拼接,返回新目录
'd:\pyhton\test\demo'

 os.path.join(r"d:\pyhton\test\hello.py",r"d:\pyhton\test\hello2.py")
'd:\pyhton\test\hello2.py'
# 有绝对路径,则之前的path将会被删除
6. os.path.dirname(path)

返回path中文件夹 (目录) 部分,不包括 \ \

>>> import os
>>> os.path.dirname(r"d:\pyhton\test\hello.py")
'd:\pyhton\test'
>>> os.path.dirname(".")
''
>>> os.path.dirname(r"d:\pyhton\test\")
'd:\pyhton\test'
>>> os.path.dirname(r"d:\pyhton\test")
test
7. os.path.basename(path)

功能:返回path中文件名

>>> import os
>>> os.path.basename(r"d:\pyhton\test\hello.py")
'hello.py'
>>> os.path.basename(".")
'.'
>>> os.path.basename(r"d:\pyhton\test\")
''
>>> os.path.basename(r"d:\pyhton\test")
'test'
8. os.path.getsize(path)

功能: 获取文件的大小[字节],
python2.7 若是文件夹(目录)则返回0
python 3.6 若为文件夹(目录)则无法计算(或者显示的是一个错误的大小数值)
若路径不存在,则报错

>>> import os
>>> os.path.getsize(r"d:\pyhton\test\hello.py")
38
>>> os.path.getsize(r"d:\pyhton\test")
4096
9. os.path.exists(path)

功能: 若文件存在返回True,若文件不存在,返回False

>>> import os
>>> os.listdir(os.getcwd())
['hello.py','test.txt']
>>> os.path.exists(r"d:\python\test\hello.py")
True
>>> os.path.exists(r"d:\python\test\hello1.py")
False
10. os.path.isdir(path)

功能:判断指定路径是否为目录,若为目录返回True,否则返回False
若路径不存在,返回False

path1 = r"E:\python\python基础\day08\demo.py"
path2 = r"E:\python\python基础\day08"

print(os.path.isdir(path1))  # False
print(os.path.isdir(path2))  # True

11. os.path.isfile(path)

功能:判断指定路径是否为文件,若为文件返回True,否则返回False
若路径不存在,返回False

path1 = r"E:\python\python基础\day08\demo.py"
path2 = r"E:\python\python基础\day08"

print(os.path.isfile(path2)) # True
print(os.path.isfile(path3)) # False
12. os.remove(path)

功能 : 删除指定路径的文件 ,若文件不存在,则报错

import os
path = r"E:\python\python基础\day08\demo.py"
os.remove(path)
13. os.rmdir(path)

功能 : 删除指定的空目录
若目录不为空,该目录下还有文件,则报错 ; 或指定的不是目录,而是文件,也报错

import os
path = r"E:\python\python基础\day08\demo"
os.remove(path)
14. os.mkdir()

功能 : 创建空目录

import os
os.mkdir("aa") # 默认在当前py文件同级目录下创建一个空目录(空文件夹)aa
os.mkdir(r"aa\bb") # 在aa文件夹下创建了一个子文件夹bb
15. os.makedirs()

功能 : 递归创建空目录

import os
os.makedirs(r"aa\bb\cc")
# 默认在当前py文件同级目录下创建一个空目录(空文件夹)aa,在aa文件夹下创建了一个子文件夹bb,
# 在bb文件夹下创建了一个子文件夹cc
16 . os.removedirs()

功能 : 递归删除空目录

import os
os.removedirs(r"aa\bb\cc")
# 将aa ,bb ,cc 文件夹都删除
17. os.chdir()

功能,切换路径,相当于cd命令

os.chdir(r"E:\python\python基础\day06")
print(os.listdir())
# 打印的内容为E:\python\python基础\day06目录下的内容
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值