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('"', '\"')
我正在尝试使用 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('"', '\"')