Python之JSON用法解析
前景
Python编写HDFS服务安装的过程中,需要将构建好的JSON对象输出到文件,采用那种方式更便捷
方案1
open 函数
def writeExecCmdCheckActionsFile(self, out_res, check_item):
"""
输出到文件
"""
try:
# host_check_java_env_check.result
self.hostCheckCustomActionsFilePath = self.hostCheckCustomActionsFilePath + check_item + '.result'
print("Host check custom action report at " + self.hostCheckCustomActionsFilePath)
with open(self.hostCheckCustomActionsFilePath, 'w+') as configfile:
configfile.write(str(out_res))
except Exception as err:
logging.error("Can't write host check file at %s :%s " % (self.hostCheckCustomActionsFilePath, err))
上述代码中with open(self.hostCheckCustomActionsFilePath, 'w+') as configfile: 打开了文件流对象 configfile, 用write()方法将字符串写入
write()方法
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
write()方法不会在字符串的结尾添加换行符('\n'):
注意:configfile.write(str(out_res)) 中,out_res 是一个Python json对象,不是字符串,所以用 str() 将json转为str,然后再写入
如果不想用 str() 方法转换,可以采用如下第二种方案
方案2
JSON模块
导入json库
import json
用法
- json.dumps() 将Python对象编码成json字符串
- json.dump() 将Python对象转化为json存储到文件中
- json.load() 将文件中的json格式转化成Python对象提取出来
- json.loads() 将json字符串编码成Python对象
测试
json.dumps json 对象--->str
import json
def run1():
# 定义一个json对象
a = {"name": "zhangsan", "age": 18}
print(type(a))
b = json.dumps(a)
print(type(b))
if __name__ == '__main__':
run1()
--------------输出------------
<class 'dict'>
<class 'str'>
json.dump json对象写入text.txt
def run2():
try:
file = "text.txt"
a = {"name": "zhangsan", "age": 18}
with open(file, 'w') as f:
json.dump(a, f)
except Exception as e:
print(e)
当前目录下输出一个文件text.txt,内容如下
{"name": "zhangsan", "age": 18}
json.load json文件--> json对象
def run3():
"""
text.txt --> json type
:return:
"""
try:
file = "text.txt"
with open(file, 'r') as f:
return json.load(f)
except Exception as e:
print(e)
if __name__ == '__main__':
a = run3()
print(type(a))
--------输出如下------------
<class 'dict'>
json.loads() json字符串--> json对象
def run4():
# 定义一个json字符串
a = """{"name": "zhangsan", "age": 18}"""
print(type(a))
b = json.loads(a)
print(type(b))
------输出如下-----
<class 'str'>
<class 'dict'>
总结
在本次编码中,需求是将构建好的Json对象返回,最终写入文件,所以选择json.dump()
代码如下:
def output_file(self, data, fun):
try:
logfile = self.outFilePath + "_" + fun + '.result'
print("function output file:" + logfile)
with open(logfile, 'w') as f:
json.dump(data, f)
except Exception as e:
logging.error("ouput to file error" + str(e))
data: json对象
logfile: 当前路径下的输出文件名称
执行 hdfs_config.py 最终输出如下:
-rw-r--r--. 1 root root 99 10月 27 12:56 hdfs_install_task_checkHDFSGroup.result
-rw-r--r--. 1 root root 99 10月 27 12:56 hdfs_install_task_checkHDFSUser.result
-rw-r--r--. 1 root root 238 10月 27 12:56 hdfs_install_task_chown2Hadoop.result
-rw-r--r--. 1 root root 53512 10月 27 12:56 hdfs_install_task_decompressionHDFS.result
-rw-r--r--. 1 root root 123 10月 27 12:56 hdfs_install_task_lnsHDFSConfig.result
-rw-r--r--. 1 root root 223 10月 27 12:56 hdfs_install_task_makeHDFSDir.result
-rw-r--r--. 1 root root 100 10月 20 11:30 checkWebUI.py
-rw-r--r--. 1 root root 747 10月 25 11:56 datanode.py
-rw-r--r--. 1 root root 23344 10月 27 12:55 hdfs_config.py ## 执行脚本
-rw-r--r--. 1 root root 24886 10月 27 12:41 hdfs_install_task
内容:
{"exit_code": 0, "exec_cmd": "ln -s /srv/dstore/1.0.0.0/hdfs/etc /etc/dstore/1.0.0.0/hdfs", "message": "ln -s is success!"}
Python之JSON用法解析的更多相关文章
- Python中json.loads解析包含\n的字符串会出错
用python中的json.loads解析字符串,失败了. [解决过程] 1.调试了半天,终于发现,如果把其中的: "呵呵加那么多连接啊\n\n这个标准还是不错的\n\n给大家推荐一个更多的 ...
- paper 161:python的Json数据解析
概念 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON.XML等.反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态 ...
- Python | JSON 数据解析(Json & JsonPath)
一.什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一 ...
- Python 下JSON的两种编解码方式实例解析
概念 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写.在日常的工作中,应用范围极其广泛.这里就介绍python下它的两种编解码方法: ...
- 【python】使用openpyxl解析json并写入excel(xlsx)
目标: 将json文本解析并存储到excel中 使用python包 openpyx import simplejsonmport codecsimport openpyxl import os # d ...
- python命令行参数解析OptionParser类用法实例
python命令行参数解析OptionParser类用法实例 本文实例讲述了python命令行参数解析OptionParser类的用法,分享给大家供大家参考. 具体代码如下: from opt ...
- 利用python将excel数据解析成json格式
利用python将excel数据解析成json格式 转成json方便项目中用post请求推送数据自定义数据,也方便测试: import xlrdimport jsonimport requests d ...
- python 导入json模块的用法
json用于字符串,和 python数据类型间进行转换,json模块有四个功能,dumps,dump,loads,load. json 用法 json.dumps 将数据通过特殊的形式转换为所有程序语 ...
- python安装json的方法;以及三种json库的区别
python中的json解释库有好几个,不同版本使用方法不同. 常用有 json-py 与smiplejson 两个包 其中,json-py 包含json.py外,还有一个minjson,两者用法上有 ...
- Form表单 JSON Content-type解析
Form表单 JSON Content-type解析 1 表单Form概述 在Form表单中,参数一般有: action 表单提交的url method 提交方式:post get name 表单的属 ...
随机推荐
- 代码随想录Day17
654.最大二叉树 给定一个不重复的整数数组 nums . 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值. 递归地在最大值 左边 的 子数组前缀 ...
- Ubuntu 安装基于 DEB 的 Firefox
自从 Canonical 推出了 Snap 之后,在所有新推出的 Ubuntu 发行版中都预装了 Snap 版的 Firefox,并将 APT 中的 Firefox 包指向了 Snap 的 Firef ...
- Ubuntu 设置远程桌面(VNC)
连接 Xfce 4 远程桌面 下载 Xfce 4 桌面环境: sudo apt install -y xfce4 xfce4-goodies 这里会提示你设置显示管理器,我们设置 gdm3 就好. 安 ...
- Angular 学习笔记 (Typescript 版本更新)
记入每一期我会用到的功能 : v4.3 1. getter setter 的类型可以不一样咯, 这个困扰很久了. (interface, object, class 都可以这样用) class T ...
- Codes 开源研发项目管理平台——创新的敏捷测试解决方案
前言 Codes 是国内首款重新定义 SaaS 模式的开源项目管理平台,支持云端认证.本地部署.全部功能开放,并且对 30 人以下团队免费.它通过整合迭代.看板.度量和自动化等功能,简化测试协同工作, ...
- 系统编程-操作系统概论PART1
Part1. 计算机的基本组成原理 Part2. 计算机执行原理顶层视图 Part3. 指令 指令周期 取指令和执行指令 指令格式 前面1字节是操作码,代码指令的功能,例如加法功能. 后面3字节用于寻 ...
- YAML 文件基本语法格式(十四)
一.YAML 文件基本语法格式 前面我们得 Kubernetes 集群已经搭建成功了,现在我们就可以在集群里面来跑我们的应用了.要在集群里面运行我们自己的应用,首先我们需要知道几个概念. 第一个当然就 ...
- 第41天:WEB攻防-ASP应用&HTTP.SYS&短文件&文件解析&Access注入&数据库泄漏
#ASP-中间件-CVE&短文件&解析&写权限 -HTTP.SYS(CVE-2015-1635) 1.漏洞描述 远程执行代码漏洞存在于 HTTP 协议堆栈 (HTTP.sys) ...
- 第6天:基础入门-抓包技术&HTTPS协议&APP&小程序&PC应用&WEB&转发联动
安装charles 到Windows本地: 安卓模拟器安装: 如果抓模拟器就要使用从远程主机,如果不是,则从所有进程 访问 谷歌浏览器安装证书: PC微信小程序代理抓取: 41:43 :如何将char ...
- 将Vscode添加右键打开文件夹功能
1. wan + r 输入 regedit 打开注册表 注册表编辑 2. 找到 HKEY_CLASSES_ROOT\*\shell分支 3. 在shell下新建"VisualCode&quo ...