echo json 到文本文件删除双引号

echo json to textfile removes double quotes

我正在尝试使用 linux bash shell echo 在文本文件中写入 json 转储字符串。我的问题是它删除了所有双引号。

示例代码。

d = {"key": "value"}
"echo %s > /home/user/%s" % (simplejson.dumps(d), 'textfile'))

在文本文件中输出

{key: value}

它删除了所有双引号,所以我无法将它加载到 json,因为它不再是有效的 json。

谢谢

既然你说你用的是paramiko,那么直接写入文件就完美了。编辑代码以反映 paramiko:

登录服务器后直接写入文件即可,无需传入bash命令(这是hackish)。 您将需要两个 try-catch:一个用于捕获打开文件时的任何错误,另一个用于捕获文件中的任何写入。如果您希望在任何一种情况下抛出异常,请删除 try-catch。

import paramiko

*do your ssh stuff to establish an SSH session to server*

sftp = ssh.open_sftp()
try:
    file = sftp.file('/home/user/textfile', 'a+')
        try:
            file.write(simplejson.dumps(d))
        except IOError:
            ...*do some error handling for the write here*
except IOError:
    ...*do some error handling for being unable to open the file here*
else:
    file.close()
sftp.close()

您需要为 Bash 用法转义引号:

("echo %s > /home/user/%s" % (simplejson.dumps(d), 'textfile')).replace('"', '\"')