【问题标题】:echo json to textfile removes double quotes将 json 回显到文本文件删除双引号
【发布时间】:2015-02-06 03:14:46
【问题描述】:

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

示例代码。

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

在文本文件中输出

{key: value}

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

谢谢

【问题讨论】:

标签: python linux echo simplejson


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    既然你说你正在使用 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()
    

    【讨论】:

      猜你喜欢
      • 2017-11-10
      • 2014-05-05
      • 2017-02-07
      • 1970-01-01
      • 2023-01-11
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 2018-03-11
      相关资源
      最近更新 更多