回显json到textfile删除双引号

2024-10-01 15:47:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

示例代码。在

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

文本文件输出

^{pr2}$

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

谢谢


Tags: key字符串代码echojson示例homevalue
2条回答

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

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

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

您可以在登录到服务器后直接写入文件,无需传入bash命令(按原样,bash命令很粗糙)。 您将需要两个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()

相关问题 更多 >

    热门问题