思考完之后
所以我,开始新建一个common的文件夹,在里面创建一个config.yaml,如下图:
yaml中写上如下的配置参数:
# 域名1
host: http://192.168.0.134:8081
如下图:
下一步,就把yaml读取写一个方法工具,在用到的地方直接复制粘贴替换就行
下来,我们编写读取yaml的方法。
第一步,我们可以先用下面的代码获取到当前项目的路径
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
import os
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(root_path)
运行之后如下:
对于很多小白,我这里还是拆分解释下,对于懂python的可以绕过这里。
里面有个参数__file__,是Python中内置的变量,它表示当前文件的文件名。可以在脚本或模块中使用它来访问当前文件的路径
如下图:
os.path.abspath(__file__)
上面的代码呢,os.path.abspath(文件名)是可以获取到当前文件的绝对路径,如下图:
最后再把整个代码加上,就是现在的获取当前的文件夹路径
做这一步的思想呢,是因为我想把yaml文件转移到这个路径下,后期可以直接找到yaml读取里面的配置
如下图:
但是现在的代码明显只是测试一下是否正常,这个时候,我们就需要把他写成function,便于其他模块调用,代码如下:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
import os
class ConfigHandler:
_SLASH = '\\'
# 项目路径
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if __name__ == '__main__':
print(ConfigHandler.root_path)
上面的只是项目路径我们获取了,以这个路径为基础,我们拿到conf.yaml
代码如下:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
import os
class ConfigHandler:
_SLASH = '\\'
# 项目路径
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#config的config.yaml路径
config_path = os.path.join(root_path, 'config' + _SLASH + 'conf.yaml')
if __name__ == '__main__':
print(ConfigHandler.root_path)
print(ConfigHandler.config_path)
这里面有个小细节,需要注意下,因为我是Windows的环境,之前也有人给我提示他想后期放在linux环境,那么_SLASH = '\\'这个就会报错,因为这都是Windows下代码的路径,由次我用了一个方法,如下
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
import os
import platform
def get_current_system():
"""
获取当前操作系统
:return:
"""
platform_system = platform.system()
return platform_system
class ConfigHandler:
_SLASH = '\\'
# 项目路径
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#config的config.yaml路径
config_path = os.path.join(root_path, 'config' + _SLASH + 'conf.yaml')
if __name__ == '__main__':
print(ConfigHandler.root_path)
print(ConfigHandler.config_path)
print(get_current_system())
上面的get_current_system()方法可以知道当前的系统是Windows的还是linux的
通过他可以用于判断,根据不同的操作系统拼接文件路径,如下:
# !/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/01
# @Author : Laopi
import os
import platform
def get_current_system():
"""
获取当前操作系统
:return:
"""
platform_system = platform.system()
return platform_system
class ConfigHandler:
_SLASH = '\\'
# 判断当前操作系统
if get_current_system() == 'Linux' or get_current_system() == "Darwin":
_SLASH = '/'
# 项目路径
root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#config的config.yaml路径
config_path = os.path.join(root_path, 'config' + _SLASH + 'conf.yaml')
if __name__ == '__main__':
print(ConfigHandler.root_path)
print(ConfigHandler.config_path)
print(get_current_system())
下来,我们就可以把之前很多demo里面写死的url,通过读取yaml完成。