Python的 "with open "语句创建以目录为名的文件,但不在实际的目录中。

问题描述 投票:0回答:1

我想使用下面的代码将JSON数据保存到一个(之前不存在的)文件中,该代码在Python 3.6.5中工作。

with open("Samples\\{}.json".format(id), "w", encoding="utf-8") as f:
    json.dump(labels, f, ensure_ascii=False, indent=4)

这将在 Samples 文件夹中创建一个新的 .json 文件。现在我用Python 3.7.3尝试了同样的方法,但是它没有在上述目录下创建一个新的.json文件,而是在python代码运行的目录下创建了一个名称为 "Samplesxyz/json "的文件(在jupyter笔记本中运行)。

我已经尝试了下面的方法,但结果同样是创建一个以目录为文件名的文件。

f = open(os.path.expanduser(os.path.join("Samples/{}.json".format(document_id)))
json.dump(labels, f, ensure_ascii=False, indent=4)

如何用Python 3.7.3在需要的目录下创建一个新的.json文件?

python python-3.7
1个回答
2
投票

with pathlib & f-string.json.dump(...)。

from pathlib import Path
document_id = 100 # Random id here ...
sample_file = Path("Samples") / f"{document_id}.json"
sample_file.parent.mkdir(exist_ok=True)
with sample_file.open("w", encoding="utf-8") as f:
    json.dump(labels, f, ensure_ascii=False, indent=4)
© www.soinside.com 2019 - 2024. All rights reserved.