Python 配管时,报价被剥离

Python 配管时,报价被剥离,python,Python,命令 sys_info_json = '"'+stamp+'":{"cpu_free" : "'+str[0]+'","disk_available" : "'+str[1]+'","disk_free" : "'+str[2]+'","ram" : "'+str[3]+'","memory_free" :"'+str[4]+'"}' print sys_info_json os.system("echo " + sys_info_json + " >> sys_info.tx

命令

 sys_info_json = '"'+stamp+'":{"cpu_free" : "'+str[0]+'","disk_available" : "'+str[1]+'","disk_free" : "'+str[2]+'","ram" : "'+str[3]+'","memory_free" :"'+str[4]+'"}'
 print sys_info_json
 os.system("echo " + sys_info_json + " >> sys_info.txt")
这里,stamp和str[]是预定义的

我想以JSON格式保存数据。
当管道传输到文本文件(sys_info.txt)中时,双引号会被剥离。

如果您想在系统外壳中看到引号,则必须将其转义,如下所示

In [16]: sys_info_json = '\\"test\\"'

In [17]: os.system("echo " + sys_info_json)
"test"
Out[17]: 0

用变量重写python
str
也不是一个好的做法。尝试使用未使用的python单词定义变量。

不要尝试通过字符串连接来构建JSON。有一个内置的图书馆。不要通过
os.system
写入文件:使用
open
write
功能

import json
data = {"cpu_free" : str[0], "disk_available": str[1], "disk_free": str[2], "ram": str[3], "memory_free": str[4]}
with open('sys_info.txt', 'w') as f:
    f.write("%s:%s" % (stamp, json.dumps(data)))

另外,不要调用列表
str
,因为它是a)不是字符串,b)隐藏内置的
str()
函数。

请定义“条带化”。那是什么样子的?你是说“脱光衣服”?哦,我想你是说“脱光衣服”。嗯,您必须转义命令行语法。你到底为什么要通过CLI
echo
绕道而行呢?!只需使用Python代码写入文件!在我发表评论时,这个问题已经被否决了两次。海报的方法是。。“异国情调”(或完全错误),但imo不值得投反对票。有一个明确的问题,甚至一些代码!请给noobs一些爱:-)逃跑没有work@Baxiz你是怎么逃跑的?(例如,Python3为此提供了一个库函数
shlex.quote
)。由于可以正确地引用字符串以防止它们被shell转义,所以您的代码似乎仍然有问题。所以请显示实际代码。完全无关。但是为什么字段名在打印时以不同的JSON顺序出现?因为字典是无序的,所以不应该依赖任何特定的顺序。