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

标签 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 key 写入 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',
}

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

最佳答案

实际上这应该与更多的 Python 3 原生方法有关。

import json,tempfile
config = {"A":[1,2], "B":"Super"}
tfile = tempfile.NamedTemporaryFile(mode="w+")
json.dump(config, tfile)
tfile.flush()
print(tfile.name)

分解一下:

  • 我们加载tempfile,并确保有一个名称为NamedTemporaryFile
  • 我们将字典转储为 json 文件
  • 我们确保它已通过 flush()
  • 写入
  • 终于可以抓取名字来查看了

请注意,在调用 NamedTemporaryFile

时,我们可以使用 delete=False 将文件保留更长时间

关于Python 从字典中写入一个 JSON 临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51081782/

相关文章:

python - torch.manual_seed(seed) 获取 RuntimeError : CUDA error: device-side assert triggered

php - 从 PHP 接收 json 回显

sql - JSON_VALUE 的 Postgres 语句

python - Pandas:强制DataFrame中列的位置(不知道所有列)

python - 函数 'cv::CascadeClassifier::detectMultiScale' 中的错误 :(-215:Assertion failed) ! 空()

python - Django 的 TinyMCE

jquery - 在 FullCalendar 中向 eventObject 添加属性

python3/hy - 使用 hy.eval 时,导入和全局变量不共享

python - 确定函数是否包含特定方法

python - Pandas 值(value)错误: Shape of passed values