Python サービスは構成ファイルを使用する必要がありますか? フォーマットをカスタマイズしないことをお勧めします。configparser を使用してください。

創造し続け、成長を加速!「ナゲッツデイリー新プラン・10月アップデートチャレンジ」に参加して23日目、クリックするとイベントの詳細が表示されます

バックグラウンド

「オンラインボードゲームコレクション」を開発しました。これは、友達と一緒に、オンラインで簡単にドウズー、ゴバン、チェスなどのゲームをプレイできる Web ページです。

私のバックグラウンド WebSocket サービスは Python で開発されています。実際、私のこれら 4 つのゲームのバックグラウンド コードはまったく同じで、同じコード セットです。唯一の違いは、構成ファイルが異なることです。正しいログを書きやすくするために、現在のゲームのキーが何であるかを知るために構成ファイルを読み取る必要があるためです。

実際、多くの場合、構成ファイルを使用する必要があります。その特徴は、変更が容易で、コードを理解していなくても変更できることです。

不明なconfigparser開発者が、json、xml などのデータ構造をカスタマイズして、構成ファイルなどの形式を定義する場合があります。実際、これはまったく不要です。Python 標準ライブラリconfigparserは、依存関係を追加することなく、より便利で強力な機能を提供します。

設定ファイルのリクエスト

構成ファイルにはいくつかの特徴があります。

  1. 手動で書き込み、手動で正しい形式を確認します。
  2. コードを読むには、構成ファイルの形式を理解する必要があります。
  3. 構成によってデータ型が異なる場合があり、一般的なものは str、int、float、および bool です。
  4. 一部の項目は定義されておらず、デフォルト値 (フォールバック) が必要な場合があります。

これらの問題configparserには解決策があります。

configparser導入

構成ファイルの形式は、Microsoft Windows の INI ファイルに似ています。

公式ドキュメントで提供されている例は、次のような良い学習ケースです。

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes

[bitbucket.org]
User = hg

[topsecret.server.com]
Port = 50022
ForwardX11 = no
复制代码
>>> config = configparser.ConfigParser()
>>> config.read('example.ini')
['example.ini']
>>> config.sections()
['bitbucket.org', 'topsecret.server.com']
>>> config['bitbucket.org']['User']
'hg'
>>> config['DEFAULT']['Compression']
'yes'
>>> config['topsecret.server.com']['Port']
'50022'
>>> config['bitbucket.org']['ForwardX11']
'yes'
复制代码

上記の典型的な例を通して、いくつかの出入り口を見ることができるはずです:

  • 設定ファイルは[]グループ化されているconfigparserため、アクセスする際は、アクセスするグループを指定してから、アクセスするキーを指定する必要があります。
  • DEFAULT是一个特殊的分组,表示默认值。如果尝试访问其它分组中不存在的key,而key存在于DEFAULT分组,那么就会使用默认值。
  • 所有类型,直接访问时,都是字符串类型。开发者需要做类型转换。详见下面内容。

更方便的类型转换

对于bool而言,类型转换比较麻烦。因为有人配置文件用on off,有人用yes no,有人用1 0,有人用true false,而且可能大小写还有差别。

这时候configparser的类型转换功能就派上用场了。通过getboolean方法,它可以自动识别上述常见的表示bool配置的英文(大小写不敏感),自动转换为True False。例如可以这样用:

>>> config['bitbucket.org'].getboolean('ForwardX11')
True
>>> config.getboolean('bitbucket.org', 'Compression')
True
复制代码

此外,类似的方法还有getintgetfloat

我们不需要getstr,是因为get本身就返回字符串类型。

写在最后

以上就是configparser库的基本内容了,已经能够满足我的日常使用。如果你想了解更多,可以阅读官方文档

公式アカウントにてオフラインパーティーゲームの作者をしているHullQinです(公式アカウントに注意して連絡して友達を作ってください) この記事を再投稿する前に、作者のHullQinを承認する必要があります。「オンライン ボード ゲーム コレクション」を独自に開発しました。これは、友達と一緒にオンラインで簡単にドウジュ、ゴバン、チェスなどのゲームを無料で、広告なしでプレイできるWebページです同じく独自開発の「合成大西瓜リメイク」また、Game Jam 2022 向けにDice Crushを開発しました。気に入ったら、フォローしてください〜時間があるときに、ゲーム作成に関連するテクノロジーを共有し、「小さなゲームの作成方法を教える」「極端なユーザーエクスペリエンス」の2つのコラムで共有します。

おすすめ

転載: juejin.im/post/7158108796089270308