最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中將JSON數(shù)據(jù)寫入文件的實(shí)現(xiàn)方法

 更新時(shí)間:2025年06月25日 10:47:24   作者:1010n111  
在Python開發(fā)中,JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于前后端數(shù)據(jù)交互、配置文件存儲(chǔ)等場(chǎng)景,當(dāng)我們需要將Python中的字典或列表等數(shù)據(jù)以JSON格式保存到文件時(shí),就需要掌握如何將JSON數(shù)據(jù)寫入文件的方法,所以本文給大家介紹了Python中將JSON數(shù)據(jù)寫入文件的實(shí)現(xiàn)方法

Python中如何將JSON數(shù)據(jù)寫入文件

技術(shù)背景

在Python開發(fā)中,JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)交換格式,常用于前后端數(shù)據(jù)交互、配置文件存儲(chǔ)等場(chǎng)景。當(dāng)我們需要將Python中的字典或列表等數(shù)據(jù)以JSON格式保存到文件時(shí),就需要掌握如何將JSON數(shù)據(jù)寫入文件的方法。

實(shí)現(xiàn)步驟

1. 導(dǎo)入json模塊

Python的json模塊提供了處理JSON數(shù)據(jù)的功能,我們需要先導(dǎo)入該模塊。

import json

2. 準(zhǔn)備JSON數(shù)據(jù)

JSON數(shù)據(jù)通常以字典或列表的形式存在于Python中。例如:

data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

3. 打開文件并寫入JSON數(shù)據(jù)

使用open()函數(shù)打開文件,然后使用json.dump()json.dumps()方法將JSON數(shù)據(jù)寫入文件。

使用json.dump()方法

json.dump()方法將Python對(duì)象直接寫入文件對(duì)象。

with open('data.json', 'w') as f:
    json.dump(data, f)

使用json.dumps()方法

json.dumps()方法將Python對(duì)象轉(zhuǎn)換為JSON字符串,然后再寫入文件。

json_string = json.dumps(data)
with open('data.json', 'w') as f:
    f.write(json_string)

核心代碼

以下是一個(gè)完整的示例代碼,展示了如何將JSON數(shù)據(jù)寫入文件,并對(duì)文件進(jìn)行讀取驗(yàn)證:

import json

# 準(zhǔn)備JSON數(shù)據(jù)
data = {
    "a list": [1, 42, 3.141, 1337, 'help', '€'],
    "a string": "bla",
    "another dict": {
        "foo": "bar",
        "key": "value",
        "the answer": 42
    }
}

# 寫入JSON文件
with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4)

# 讀取JSON文件
with open('data.json') as data_file:
    data_loaded = json.load(data_file)

print(data == data_loaded)

最佳實(shí)踐

提高可讀性

為了使生成的JSON文件更易于閱讀,可以在json.dump()json.dumps()方法中添加indentsort_keys參數(shù)。

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False, indent=4, sort_keys=True)

處理非ASCII字符

如果JSON數(shù)據(jù)中包含非ASCII字符,建議使用ensure_ascii=False參數(shù),以避免字符被轉(zhuǎn)義。

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, ensure_ascii=False)

常見問題

1. TypeError: must be string or buffer, not dict

當(dāng)直接將Python字典寫入文件時(shí),會(huì)出現(xiàn)該錯(cuò)誤。因?yàn)槲募懭氩僮餍枰址蜃止?jié)類型的數(shù)據(jù),而字典不是字符串類型。解決方法是使用json.dump()json.dumps()方法將字典轉(zhuǎn)換為JSON字符串。

2. 非ASCII字符被轉(zhuǎn)義

如果不使用ensure_ascii=False參數(shù),非ASCII字符會(huì)被轉(zhuǎn)義為Unicode編碼。例如:

import json
data = {"price": "€10"}
print(json.dumps(data))  # 輸出: '{"price": "\\u20ac10"}'
print(json.dumps(data, ensure_ascii=False))  # 輸出: '{"price": "€10"}'

3. 處理NumPy數(shù)據(jù)類型

如果JSON數(shù)據(jù)中包含NumPy數(shù)據(jù)類型,json.dumps()方法會(huì)拋出TypeError異常??梢宰远x一個(gè)JSON編碼器來處理NumPy數(shù)據(jù)類型。

import json
import numpy as np

class NumpyEncoder(json.JSONEncoder):
    """ Special json encoder for np types """
    def default(self, obj):
        if isinstance(obj, (np.int_, np.intc, np.intp, np.int8,
                            np.int16, np.int32, np.int64, np.uint8,
                            np.uint16, np.uint32, np.uint64)):
            return int(obj)
        elif isinstance(obj, (np.float_, np.float16, np.float32,
                              np.float64)):
            return float(obj)
        elif isinstance(obj, (np.ndarray,)):
            return obj.tolist()
        return json.JSONEncoder.default(self, obj)

my_data = {'array': np.array([1, 2, 3])}
with open('my_filename.json', 'w') as f:
    json.dump(my_data, f, indent=4, cls=NumpyEncoder)

到此這篇關(guān)于Python中將JSON數(shù)據(jù)寫入文件的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)Python將JSON數(shù)據(jù)寫入文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • AI:如何訓(xùn)練機(jī)器學(xué)習(xí)的模型

    AI:如何訓(xùn)練機(jī)器學(xué)習(xí)的模型

    這篇文章主要介紹了是如何進(jìn)行機(jī)器學(xué)習(xí)的模型的訓(xùn)練,全文邏輯清晰,簡單易懂,如果您正在學(xué)習(xí)機(jī)器學(xué)習(xí)那么可以參考下,說不定會(huì)有不一樣的收貨
    2021-04-04
  • Sublime?Text4?配置?Python3?環(huán)境、代碼提示、編譯報(bào)錯(cuò)的解決方案

    Sublime?Text4?配置?Python3?環(huán)境、代碼提示、編譯報(bào)錯(cuò)的解決方案

    這篇文章主要介紹了Sublime?Text4?配置?Python3?環(huán)境、代碼提示、編譯報(bào)錯(cuò)教程,通過圖文并茂的形式給大家介紹了配置自動(dòng)代碼提示的方法,需要的朋友可以參考下
    2022-01-01
  • python中字典的常見操作總結(jié)2

    python中字典的常見操作總結(jié)2

    這篇文章主要介紹了python中字典的常見操作總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • Python語言實(shí)現(xiàn)SIFT算法

    Python語言實(shí)現(xiàn)SIFT算法

    SIFT,即尺度不變特征變換,是用于圖像處理領(lǐng)域的一種描述,本文重點(diǎn)給大家介紹Python語言實(shí)現(xiàn)SIFT算法,感興趣的朋友一起看看吧
    2021-11-11
  • 教你用Python寫一個(gè)植物大戰(zhàn)僵尸小游戲

    教你用Python寫一個(gè)植物大戰(zhàn)僵尸小游戲

    這篇文章主要介紹了教你用Python寫一個(gè)植物大戰(zhàn)僵尸小游戲,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • python小程序?qū)崿F(xiàn)刷票功能詳解

    python小程序?qū)崿F(xiàn)刷票功能詳解

    這篇文章主要介紹了python小程序?qū)崿F(xiàn)刷票功能詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Python文件和目錄操作詳解

    Python文件和目錄操作詳解

    這篇文章主要介紹了Python文件和目錄操作詳解,本文講解了文件的打開和創(chuàng)建、文件的讀取、文件的寫入、內(nèi)容查找替換等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • 詳解SQLAlchemy框架使用手冊(cè)

    詳解SQLAlchemy框架使用手冊(cè)

    SQLAlchemy是一個(gè)靈活且功能強(qiáng)大的ORM框架,它可以讓Python開發(fā)者輕松地管理數(shù)據(jù)庫,本文主要介紹了SQLAlchemy框架使用手冊(cè),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • python中turtle庫的簡單使用教程

    python中turtle庫的簡單使用教程

    這篇文章主要給大家介紹了關(guān)于python中turtle庫的簡單使用教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Matplotlib中%matplotlib inline如何使用

    Matplotlib中%matplotlib inline如何使用

    這篇文章主要介紹了Matplotlib中%matplotlib inline如何使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

鹿泉市| 嘉禾县| 徐汇区| 涪陵区| 千阳县| 汉阴县| 西吉县| 宣恩县| 格尔木市| 萝北县| 民乐县| 邛崃市| 虎林市| 无为县| 武夷山市| 日喀则市| 获嘉县| 苍梧县| 永仁县| 吉林省| 廊坊市| 曲阳县| 曲麻莱县| 屯留县| 浦东新区| 上犹县| 岱山县| 南平市| 高要市| 福建省| 额尔古纳市| 长阳| 南澳县| 柳河县| 香格里拉县| 江川县| 施秉县| 响水县| 道孚县| 鹿泉市| 朝阳县|