1、open()和with open()
🌺open()
open()一般用于本地文件的读写操作,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
open()语法
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
参数:
- file: 必需,是文件路径(相对或者绝对路径)。
- mode: 可选,文件打开模式
- buffering: 设置缓冲
- encoding: 一般使用utf8,中文可以是GBK
- errors: 报错级别
- newline: 区分换行符
- closefd: 传入的file参数类型
file=open(r"C:\code\trading_system_autotest\config\environment.yaml","r",encoding="utf-8")
a=file.read()
print(a)
file.close()
open()方法有一个缺点就是:open()需要配合close()使用,如果文件读取过程发生i/o异常,会造成整个程序的崩溃,后面的close()就无法执行了,系统就无法释放这个文件。
优化:使用try……except……fianlly,这样即使读取异常了,一会执行后面的close()方法
(输入异常捕获有个快捷键:选中a=file.read()行,然后按:ctrl+alt+t)
file=open(r"C:\code\trading_system_autotest\config\environment.yaml","r",encoding="gbk")
try:
a=file.read()
print(a)
except Exception as e:
print(a)
finally:
file.close()
🌺with open()
with open()语法
with open()用法和open()用法一致,但比open()更有优势,open()需要配合close()配合使用,with open即便在文件读写过程中发生IO异常,也会自动调用.close()方法,关闭文件
with open(r"C:\code\trading_system_autotest\config\environment.yaml","r",encoding="GBK") as env_file:
a=env_file.read()
print(a)print(a)
2、读取项目中的yaml文件
with open(r"C:\code\trading_system_autotest\config\environment.yaml","r",encoding="GBK") as env_file:
self.env=yaml.load(env_file,Loader=yaml.FullLoader)
1、load()读取出来的内容,不会改变数据的格式,原来是什么格式,读取出来就是什么格式(read()读取出来的格式是字符串)
2、需要加Loader=yaml.FullLoader,不然会报错
3、yaml.load(f.read(), Loader=yaml.FullLoader)也可以写成yaml.load(f, Loader=yaml.FullLoader),读取出来的结果相同。
4、读取出来的数据是Python的字典格式,后续可以通过字典的访问方式来提取指定的值