Python从字典中写入JSON临时文件

时间:2018-06-28 11:28:06

标签: python json python-3.x temporary-files

我正在研究一个python(3.6)项目,需要从Python字典中写入JSON文件。

这是我的字典:

{'deployment_name': 'sec_deployment', 'credentials': {'type': 'type1', 'project_id': 'id_001',}, 'project_name': 'Brain', 'project_id': 'brain-183103', 'cluster_name': 'numpy', 'zone_region': 'europe-west1-d', 'services': 'Single', 'configuration': '', 'routing': ''}

我需要将credentials密钥写入JSON文件。

这是我尝试过的方法:

tempdir = tempfile.mkdtemp()
saved_umask = os.umask(0o077)
path = os.path.join(tempdir)
cred_data = data['credentials']
with open(path + '/cred.json', 'a') as cred:
    cred.write(cred_data)
credentials = prepare_credentials(path + '/cred.json')
print(credentials)
os.umask(saved_umask)
shutil.rmtree(tempdir)

它不是写JSON格式的文件,因此生成的文件为:

{
  'type': 'type1',
  'project_id': 'id_001',
}

它带有单引号而不是双引号。

2 个答案:

答案 0 :(得分:2)

使用json模块

例如:

import json
with open(path + '/cred.json', 'a') as cred:
    json.dump(cred_data, cred)

答案 1 :(得分:0)

实际上,应该使用更多的Python 3本机方法。

tempfile

要对此进行细分:

  • 我们加载NamedTemporaryFile,并确保使用json命名
  • 我们将字典作为flush()文件转储
  • 我们确保已通过delete=False
  • 将其写入
  • 最后,我们可以获取名称以进行检查

请注意,调用NamedTemporaryFile时,我们可以使用import os, sys, time import subprocess server = subprocess.Popen('./start.sh',stdin=subprocess.PIPE,shell=True) content = '' previousContent = '' while True: #you can add a time.sleep() to reduce lag f = open('logs/latest.log') content = f.read() if previousContent in content: content.replace(previousContent,'') if content != '': print(content) command = input('') if command: server.stdin.write(bytes(command + '\r\n', 'ascii')) server.stdin.flush() previousContent = f.read() 将文件保存更长时间