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