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

一文帶你梳理Python中七種配置文件的常見用法

 更新時(shí)間:2025年09月01日 08:18:40   作者:跟橙姐學(xué)代碼  
在寫 Python 項(xiàng)目的時(shí)候,最讓人頭大的環(huán)節(jié)之一,就是配置文件,本文將帶大家一起深入了解下Python中七種配置文件的常見用法,感興趣的可以了解下

在寫 Python 項(xiàng)目的時(shí)候,最讓人頭大的環(huán)節(jié)之一,就是配置文件

你肯定遇到過:

  • 模型訓(xùn)練路徑要配置;
  • API Key 要配置;
  • 數(shù)據(jù)庫(kù)連接參數(shù)要配置;
  • 生產(chǎn)環(huán)境、測(cè)試環(huán)境的參數(shù)還得區(qū)分……

結(jié)果就是:項(xiàng)目寫著寫著,光是管理配置文件就快把人逼瘋。

更扎心的是,不同的項(xiàng)目,配置文件格式還五花八門——有人用 .ini,有人用 .json,有人推崇 .yaml,還有 .toml、.env、.xml,甚至直接用 .py 文件來寫。

那么問題來了:到底該用哪種?它們有什么區(qū)別?在 Python 里怎么讀寫?

別急,這篇文章我會(huì)把 7 種常見的配置方式一次性說清楚,代碼實(shí)戰(zhàn)全給你備好,照著用就行。

一、為什么配置文件這么重要

在項(xiàng)目開發(fā)里,配置文件就像“遙控器”。 你不可能把所有參數(shù)寫死在代碼里吧? 那樣一旦換服務(wù)器、換數(shù)據(jù)庫(kù)、換模型路徑,改動(dòng)起來簡(jiǎn)直要命。

有了配置文件,就像把遙控器交給你:

  • 想改參數(shù),直接改配置,不用動(dòng)核心代碼;
  • 想?yún)^(qū)分測(cè)試環(huán)境和生產(chǎn)環(huán)境?復(fù)制兩份配置文件就行;
  • 想分享項(xiàng)目?把敏感信息放進(jìn) .env,別人拿到項(xiàng)目后只要改一改配置,就能跑起來。

所以,配置文件的格式選擇,其實(shí)決定了你的項(xiàng)目可維護(hù)性和擴(kuò)展性。

二、常見配置格式橫向?qū)Ρ?/h2>

咱們先來個(gè)總覽,心里有數(shù):

格式可讀性復(fù)雜度安全性類型支持適用場(chǎng)景
INI基礎(chǔ)類型簡(jiǎn)單分組配置
JSON豐富跨語(yǔ)言、數(shù)據(jù)交換
YAML豐富復(fù)雜配置,帶注釋
XML豐富企業(yè)級(jí)規(guī)范
.env字符串環(huán)境變量、敏感信息
TOML豐富Python 項(xiàng)目常用
Python 文件完全支持框架級(jí)、動(dòng)態(tài)配置

一張表看下來,基本思路就出來了:

  • 簡(jiǎn)單粗暴用 INI;
  • 要跨語(yǔ)言、交換數(shù)據(jù)用 JSON;
  • 想要人類友好 + 注釋能力強(qiáng),就上 YAML;
  • 如果你是企業(yè)項(xiàng)目、偏 Java 系,可能用 XML;
  • 需要管理敏感信息, .env 幾乎是標(biāo)配;
  • TOML 是 Python 項(xiàng)目的新寵,兼顧簡(jiǎn)潔和結(jié)構(gòu);
  • 框架配置動(dòng)不動(dòng)就是 .py 文件(比如 Django),那是特殊情況。

下面我們就一一拆解,看它們?cè)?Python 里怎么用。

三、七種方式逐個(gè)過

1. INI 文件 —— 老牌選手

INI 文件最大的優(yōu)點(diǎn)就是:簡(jiǎn)單、直觀、Python 原生支持。 標(biāo)準(zhǔn)庫(kù)里有 configparser,拿來就用。

import configparser

def handle_ini_file():
    # 寫INI文件
    config = configparser.ConfigParser()
    config['DEFAULT'] = {
        'ServerAliveInterval': '45',
        'Compression': 'yes',
        'CompressionLevel': '9'
    }
    config['bitbucket.org'] = {}
    config['bitbucket.org']['User'] = 'hg'
    config['topsecret.server.com'] = {}
    topsecret = config['topsecret.server.com']
    topsecret['Port'] = '50022'
    topsecret['ForwardX11'] = 'no'

    # 寫入文件
    with open('myconfig.ini', 'w') as f:
        config.write(f)

    # 讀取INI文件
    config_read = configparser.ConfigParser()
    config_read.read('myconfig.ini')

    print("INI文件內(nèi)容:")
    print(f"ServerAliveInterval: {config_read['DEFAULT']['ServerAliveInterval']}")
    print(f"bitbucket User: {config_read.get('bitbucket.org', 'User')}")
    print(f"Port: {config_read.getint('topsecret.server.com', 'Port')}")
    print(f"ForwardX11: {config_read.getboolean('topsecret.server.com', 'ForwardX11')}")

適合場(chǎng)景:配置比較簡(jiǎn)單,不需要嵌套。

2. JSON 文件 —— 跨語(yǔ)言通吃

幾乎所有語(yǔ)言都支持 JSON,這就是它的殺手锏。 Python 里用 json 模塊,一行搞定。

import json

def handle_json_file():
    data = {
        "name": "John",
        "age": 30,
        "city": "New York",
        "is_student": False,
        "hobbies": ["reading", "gaming", "hiking"],
        "address": {
            "street": "123 Main St",
            "zipcode": "10001"
        }
    }

    # 寫JSON
    with open('myconfig.json', 'w') as f:
        json.dump(data, f, indent=4)

    # 讀JSON
    with open('myconfig.json', 'r') as f:
        data_read = json.load(f)

    print("JSON文件內(nèi)容:")
    print(f"Name: {data_read['name']}")
    print(f"Age: {data_read['age']}")
    print(f"Hobbies: {', '.join(data_read['hobbies'])}")
    print(f"Zipcode: {data_read['address']['zipcode']}")

適合場(chǎng)景:需要和別的語(yǔ)言/程序交互的數(shù)據(jù)交換。

3. YAML 文件 —— 人類最友好的配置

YAML 近幾年在 Python 圈特別火,優(yōu)點(diǎn)就是:簡(jiǎn)潔,還能寫注釋! 不過要裝 pyyaml,標(biāo)準(zhǔn)庫(kù)沒帶。

import yaml

def handle_yaml_file():
    data = {
        "name": "Alice",
        "age": 25,
        "city": "London",
        "is_student": True,
        "hobbies": ["painting", "dancing"],
        "address": {
            "street": "456 Oak Ave",
            "zipcode": "SW1A 1AA"
        }
    }

    # 寫YAML
    with open('myconfig.yaml', 'w') as f:
        yaml.dump(data, f, sort_keys=False)

    # 讀YAML
    with open('myconfig.yaml', 'r') as f:
        data_read = yaml.safe_load(f)

    print("YAML文件內(nèi)容:")
    print(f"Name: {data_read['name']}")
    print(f"Age: {data_read['age']}")
    print(f"Hobbies: {', '.join(data_read['hobbies'])}")
    print(f"Zipcode: {data_read['address']['zipcode']}")

適合場(chǎng)景:復(fù)雜項(xiàng)目,需要手動(dòng)編輯、加注釋。

4. TOML 文件 —— Python 官方推薦

TOML 是近年來火起來的,它的設(shè)計(jì)初衷就是做配置。 Python 官方文檔里推薦用它。

import toml

# 寫入TOML
data = {
    "title": "TOML config",
    "owner": {
        "name": "Tom Preston-Werner",
        "dob": "1979-05-27T07:32:00-08:00"
    },
    "database": {
        "server": "192.168.1.1",
        "ports": [8001, 8001, 8002]
    }
}

with open("config.toml", "w") as f:
    toml.dump(data, f)

# 讀取TOML
with open("config.toml", "r") as f:
    config = toml.load(f)

print('toml配置信息:', config["database"]["server"])

適合場(chǎng)景:現(xiàn)代 Python 項(xiàng)目,結(jié)構(gòu)化又簡(jiǎn)潔。

5. XML 文件 —— 老派企業(yè)最愛

XML 在 Java 生態(tài)里非常常見,Python 里用得少,主要是寫法太啰嗦。

import xml.etree.ElementTree as ET

# 寫XML
root = ET.Element("config")
server = ET.SubElement(root, "server")
ET.SubElement(server, "host").text = "localhost"
ET.SubElement(server, "port").text = "8080"

tree = ET.ElementTree(root)
tree.write("config.xml")

# 讀XML
tree = ET.parse("config.xml")
root = tree.getroot()
host = root.find("server/host").text
port = root.find("server/port").text
print(host)
print('端口', port)

適合場(chǎng)景:企業(yè)級(jí)規(guī)范,或者要和 Java 系統(tǒng)打交道時(shí)。

6. 環(huán)境變量(.env 文件)—— 敏感信息守護(hù)者

密碼、API Key、數(shù)據(jù)庫(kù) URL 這些東西,最適合放 .env。 配合 python-dotenv,特別方便。

from dotenv import load_dotenv
import os

# 加載.env
load_dotenv()

# 讀取環(huán)境變量
api_key = os.getenv("API_KEY")
database_url = os.getenv("DATABASE_URL")

print('apikey:', api_key)
print('Url:', database_url)

適合場(chǎng)景:存儲(chǔ)敏感配置,環(huán)境變量管理。

7. Python 文件 —— 直接上本尊

有些框架直接用 .py 做配置(Django 就是)。 靈活性最高,但也意味著安全性和維護(hù)性要小心。

# settings.py
DEBUG = True
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'mydatabase'
    }
}

適合場(chǎng)景:框架內(nèi)部、動(dòng)態(tài)計(jì)算配置。

四、怎么選

一句話總結(jié):

  • 快速小項(xiàng)目:INI
  • 要交換數(shù)據(jù):JSON
  • 人類友好:YAML
  • Python 新項(xiàng)目:TOML
  • 敏感信息:.env
  • 企業(yè)/老系統(tǒng):XML
  • 框架內(nèi)置:.py

大多數(shù)情況下,YAML + TOML + .env 足夠覆蓋絕大多數(shù) Python 項(xiàng)目需求。

五、最后的話

別小看配置文件,它決定了你的項(xiàng)目是不是“優(yōu)雅”。 如果配置亂七八糟,項(xiàng)目就會(huì)越來越臃腫,哪怕代碼寫得再漂亮,也會(huì)被坑到。

所以,學(xué)會(huì)正確地管理配置,其實(shí)就是在給未來的自己減負(fù)。

到此這篇關(guān)于一文帶你梳理Python中七種配置文件的常見用法的文章就介紹到這了,更多相關(guān)Python配置文件用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決Django中修改js css文件但瀏覽器無法及時(shí)與之改變的問題

    解決Django中修改js css文件但瀏覽器無法及時(shí)與之改變的問題

    今天小編就為大家分享一篇解決Django中修改js css文件但瀏覽器無法及時(shí)與之改變的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python竟能畫這么漂亮的花,帥呆了(代碼分享)

    Python竟能畫這么漂亮的花,帥呆了(代碼分享)

    這篇文章主要介紹了用Python作圖的一個(gè)簡(jiǎn)單實(shí)例,通過turtle模塊實(shí)現(xiàn)作圖,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • python opencv 找出圖像中的最大輪廓并填充(生成mask)

    python opencv 找出圖像中的最大輪廓并填充(生成mask)

    這篇文章主要介紹了python opencv 找出圖像中的最大輪廓并填充(生成mask),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Python基于Tkinter實(shí)現(xiàn)的記事本實(shí)例

    Python基于Tkinter實(shí)現(xiàn)的記事本實(shí)例

    這篇文章主要介紹了Python基于Tkinter實(shí)現(xiàn)的記事本,實(shí)例分析了Tkinter實(shí)現(xiàn)記事本程序的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • python?web?開發(fā)之Flask中間件與請(qǐng)求處理鉤子的最佳實(shí)踐

    python?web?開發(fā)之Flask中間件與請(qǐng)求處理鉤子的最佳實(shí)踐

    Flask作為輕量級(jí)Web框架,提供了靈活的請(qǐng)求處理機(jī)制,中間件和請(qǐng)求鉤子允許開發(fā)者在請(qǐng)求處理的不同階段插入自定義邏輯,實(shí)現(xiàn)諸如身份驗(yàn)證、日志記錄、數(shù)據(jù)預(yù)處理等功能,本文將詳細(xì)介紹Flask的請(qǐng)求處理鉤子、g對(duì)象以及中間件模式的使用方法和最佳實(shí)踐,感興趣的朋友一起看看吧
    2025-05-05
  • python定時(shí)關(guān)機(jī)小腳本

    python定時(shí)關(guān)機(jī)小腳本

    這篇文章主要為大家詳細(xì)介紹了python定時(shí)關(guān)機(jī)小腳本,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python讀寫txt文件的多種方法

    Python讀寫txt文件的多種方法

    文本文件(.txt)是最基礎(chǔ)、最通用的數(shù)據(jù)存儲(chǔ)格式之一,廣泛應(yīng)用于日志記錄、配置文件、數(shù)據(jù)交換等場(chǎng)景,本文將詳細(xì)介紹Python中讀寫txt文件的各種方法,包括基礎(chǔ)操作和高級(jí)技巧,需要的朋友可以參考下
    2026-05-05
  • Python元組的嵌套使用與多層元組的訪問與遍歷指南

    Python元組的嵌套使用與多層元組的訪問與遍歷指南

    在Python的世界里,元組(Tuple)是一種簡(jiǎn)單卻強(qiáng)大的數(shù)據(jù)結(jié)構(gòu),它以其不可變性和輕量級(jí)特性,成為許多場(chǎng)景下的首選如何優(yōu)雅地處理嵌套元組?如何高效訪問和遍歷多層嵌套的元組?這些問題困擾著許多初學(xué)者,本文將深入探討元組的嵌套使用技巧,需要的朋友可以參考下
    2026-05-05
  • python魔法方法-屬性訪問控制詳解

    python魔法方法-屬性訪問控制詳解

    下面小編就為大家?guī)硪黄猵ython魔法方法-屬性訪問控制詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-07-07
  • 簡(jiǎn)單介紹使用Python解析并修改XML文檔的方法

    簡(jiǎn)單介紹使用Python解析并修改XML文檔的方法

    這篇文章主要介紹了使用Python解析并修改XML文檔的方法,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-10-10

最新評(píng)論

临海市| 黄龙县| 罗定市| 瓮安县| 沿河| 上思县| 崇州市| 梁平县| 澄迈县| 湘乡市| 肥东县| 怀安县| 察哈| 麻江县| 永城市| 双江| 淮北市| 安新县| 乡宁县| 乌鲁木齐县| 宿松县| 司法| 赫章县| 龙泉市| 峨山| 佛学| 资兴市| 宁蒗| 太和县| 中西区| 沂源县| 双柏县| 双城市| 宣汉县| 河曲县| 鄢陵县| 西盟| 乌海市| 吉首市| 秀山| 厦门市|