echo json to text file删除双引号

时间:2015-02-06 03:14:47

标签: python linux echo simplejson

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

示例代码。

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

文本文件中的输出

{key: value}

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

由于

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

由于您说您正在使用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()