8

Python for Windows でプログラムを作成しています。変数とユーザー設定を保存して、プログラムを終了して再起動した後でもそれらを呼び出せるようにしたいと考えています。

Windowsマシンでこれを行う理想的な方法はありますか? _winregWindows レジストリはこのタスクに適していますか? それとも、独自のデータベースを作成する必要がありますか?

4

8 に答える 8

9

Python2 には、Python3 の configparser であるConfigParserがあります。

import ConfigParser, os

config = ConfigParser.ConfigParser()
config.readfp(open('defaults.cfg'))
config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')])

Windows 上でさえ、レジストリはスカムと極悪の惨めなハイブであり、それを使用して Python アプリの構成を保存するべきではないことに注意する必要があります。

于 2012-05-17T22:36:10.833 に答える
5

通常、「ホーム」フォルダーの構成フォルダーに保存することをお勧めします。これは *nix システムでは簡単ですが、Windows ではより困難です。実際に「アプリケーション データ」ディレクトリを取得する必要があるからです。これは通常私にとってはうまくいきます:

import os
if os.name != "posix":
    from win32com.shell import shellcon, shell
    homedir = "{}\\".format(shell.SHGetFolderPath(0, shellcon.CSIDL_APPDATA, 0, 0))
else:
    homedir = "{}/".format(os.path.expanduser("~"))

ホームディレクトリを作成したら、プロジェクトにちなんだ名前のフォルダーを作成する必要があります。

if not os.path.isdir("{0}.{1}".format(homedir,projectname)):
    os.mkdir("{0}.{1}".format(homedir,projectname))

次に、そのフォルダーに構成ファイルを作成し、選択した形式でオプションを書き込みます (私の個人的なお気に入りは XML です)。

于 2012-05-17T22:34:41.570 に答える
4

何かが足りない場合を除いて、正規表現はWindowsレジストリとは何の関係もありません。ユーザーのホームディレクトリなど、どこかに設定ファイルを保存するだけです。少なくとも、Linuxで行うことです。ファイルをどこかに保存します。~/.config/

于 2012-05-17T22:10:49.613 に答える
1

いくつかの方法があり、2つの主な方向に分けられます

  • モジュールを使用してWindowsレジストリにアクセスし_winregます。

レジストリを使用して、設定を別のマシンに転送したり、それらを検査またはバックアップしたりすることは簡単ではありません。あなたはregeditそれらのために使わなければならないでしょう。

もう1つの方法は、ユーザーの「マイドキュメント」フォルダにあるファイルに設定を保存します。これにより、設定を別のマシンまたはユーザーに簡単に移動でき、プログラムの設定を他のアプリケーションのホストの設定と混同することはありません。したがって、それらのバックアップや復元などは簡単です。1つのファイルをコピーするだけです。テキスト形式を選択すると、設定の検査とデバッグも簡単になります。

  • 設定をリスト、タプル、または辞書に入れて、cPickleモジュールと一緒に保存します。これはおそらく最も簡単な方法の1つです。欠点として、ピクルス化されたデータはデフォルトでASCII形式を使用しますが、人間が読める形式ではありません。
  • モジュールを使用してConfigParser、Windowsのファイルと同様の構造で構成ファイルを保存およびロードし.iniます。これらのファイルは人間が読める形式です。
  • モジュールを使用して、json設定をjson形式で保存します。これらのファイルは人間が読める形式です。
  • 設定をPython式としてテキストファイルに保存し、でロードしますexecfile()。注意:これは任意のコードの実行に使用される可能性があるため、安全上の考慮事項があります。しかし、良い面としては、非常に簡単で読みやすいです。
于 2012-05-17T22:40:01.120 に答える
1

設定のキーと値のペアだけを保存する場合は、テキスト構成ファイルで行います。Python 構造を保存したい場合は、pickleまたはを使用してくださいshelve。軽量で手間のかからない rdbms が必要な場合は、sqlite.

于 2012-05-17T22:32:42.773 に答える
1

pickleモジュールは当然の選択ですが、それが書き込むファイルは人間が判読できなくなります。構成ファイルの場合、構成ファイルが、ユーザーが読み取ったり編集したりできる単純なテキスト形式であるとよいでしょう。したがって、JSON とjsonモジュールを使用することをお勧めします。

于 2012-05-17T22:35:44.127 に答える
0

変数を保存するには、ピクルを使用することをお勧めします

于 2012-05-17T22:19:08.567 に答える