解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题


Posted in Python onApril 27, 2020

1、问题现象:

解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题

2、解决办法:

editor的字体设置为DialogInput

解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题

补充知识:Python +Selenium 支持多项目集中配置文件管理Yaml

在自动化测试项目管理经常会遇到2个问题:

1.我手头上有多个需要做自动化的项目,我每个项目都要新建一个项目文件吗?

2.一些基础的配置信息如何高效的进行管理?

争对这2个问题,这边采用了Yaml 进行配置文件的一个管理:YAML 是一种简洁的非标记语言。YAML以数据为中心,使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。

基本规则

YAML有以下基本规则:

1、大小写敏感

2、使用缩进表示层级关系

3、禁止使用tab缩进,只能使用空格键

4、缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。

5、使用#表示注释

6、字符串可以不用引号标注

其他具体的语法需要大家百度一下下了!我们直接上源码!

给个文件试例:如图右3个项目配置文件(apk;cm,gf),一个整体配置文件

解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题

读取文件源码:(file_reader.py)里面还可以放入其它文件类型的读取方法(后话)

""
文件读取。YamlReader读取yaml文件
"""
import yaml
import os
from xlrd import open_workbook
class YamlReader:
 def __init__(self, yamlf):
  if os.path.exists(yamlf):
   self.yamlf = yamlf
  else:
   raise FileNotFoundError('文件不存在!')
  self._data = None
 @property
 def data(self):
  # 如果是第一次调用data,读取yaml文档,否则直接返回之前保存的数据
  if not self._data:
   with open(self.yamlf, 'rb') as f:
    self._data = list(yaml.safe_load_all(f)) # load后是个generator,用list组织成列表
  return self._data

之后就是我们不同的调用了:(config.py)

"""
读取配置。这里配置文件用的yaml,也可用其他如XML,INI等,需在file_reader中添加相应的Reader进行处理。
"""
import os
from util_s.file_reader import YamlReader
 
# 通过当前文件的绝对路径,其父级目录一定是框架的base目录,然后确定各层的绝对路径。如果你的结构不同,可自行修改。
# 之前直接拼接的路径,修改了一下,用现在下面这种方法,可以支持linux和windows等不同的平台,也建议大家多用os.path.split()和os.path.join(),不要直接+'\\xxx\\ss'这样
BASE_PATH = os.path.split(os.path.dirname(os.path.abspath(__file__)))[0]
CONFIG_FILE = os.path.join(BASE_PATH, 'Config', 'config.yml')
GF_CONFIG_FILE = os.path.join(BASE_PATH, 'Config', 'gf_config.yml')
CM_CONFIG_FILE = os.path.join(BASE_PATH, 'Config', 'cm_config.yml')
APK_CONFIG_FILE = os.path.join(BASE_PATH, 'Config', 'apk_config.yml')
 
class Config:
 def __init__(self, config=""):
  if config == "gf":
   self.config = YamlReader(GF_CONFIG_FILE).data
  if config == "cm":
   self.config = YamlReader(CM_CONFIG_FILE).data
  if config == "apk":
   self.config = YamlReader(APK_CONFIG_FILE).data
  else:
   self.config = YamlReader(CONFIG_FILE).data
 
 def get(self, element, index=0):
  """
  yaml是可以通过'---'分节的。用YamlReader读取返回的是一个list,第一项是默认的节,如果有多个节,可以传入index来获取。
  这样我们其实可以把框架相关的配置放在默认节,其他的关于项目的配置放在其他节中。可以在框架中实现多个项目的测试。
  """
  return self.config[index].get(element)

最后就是每次使用的方法啦!(在其他邮件相关文章中有用到)

from util_s.config import Config
 
config = Config("gf")
mail_host = config.get("mail_host")
my_sender = config.get("my_sender") # 发件人邮箱账号
my_pass = config.get("my_pass") # 发件人邮箱密码
my_user = config.get("my_user") # 收件人邮箱账号,我这边发送给自己

具体Yaml 文件内容贴图一个

解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题

以上这篇解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之关于类的初步认识
Oct 11 Python
Python使用正则表达式过滤或替换HTML标签的方法详解
Sep 25 Python
Python构建网页爬虫原理分析
Dec 19 Python
Python实现感知器模型、两层神经网络
Dec 19 Python
python处理csv数据动态显示曲线实例代码
Jan 23 Python
Tensorflow分类器项目自定义数据读入的实现
Feb 05 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
基于tensorflow权重文件的解读
May 26 Python
Python提取PDF指定内容并生成新文件
Jun 09 Python
自动在Windows中运行Python脚本并定时触发功能实现
Sep 04 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
Apr 27 #Python
python读取yaml文件后修改写入本地实例
Apr 27 #Python
基于SpringBoot构造器注入循环依赖及解决方式
Apr 26 #Python
Python判断字符串是否为空和null方法实例
Apr 26 #Python
如何将PySpark导入Python的放实现(2种)
Apr 26 #Python
基于python实现对文件进行切分行
Apr 26 #Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
Apr 26 #Python
You might like
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
PHP实现登陆并抓取微信列表中最新一组微信消息的方法
2017/07/10 PHP
使用PHP+MySql+Ajax+jQuery实现省市区三级联动功能示例
2017/09/15 PHP
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
关于javascript的一些知识以及循环详解
2016/09/12 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
快速搭建vue2.0+boostrap项目的方法
2018/04/09 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
微信小程序canvas分享海报功能
2019/10/31 Javascript
[01:52]PWL S2开团时刻第四期——DOTA2成语故事
2020/12/03 DOTA
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
对python程序内存泄漏调试的记录
2018/06/11 Python
Python3爬虫之urllib携带cookie爬取网页的方法
2018/12/28 Python
使用python opencv对目录下图片进行去重的方法
2019/01/12 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
Python调用ffmpeg开源视频处理库,批量处理视频
2020/11/16 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
html5 初试 indexedDB(推荐)
2016/07/21 HTML / CSS
美国校园市场:OCM
2017/06/08 全球购物
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
医院实习接收函
2014/01/12 职场文书
初中毕业生的自我评价
2014/03/03 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
预备党员转正材料
2014/12/19 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
一篇文章告诉你如何实现Vue前端分页和后端分页
2022/02/18 Vue.js