1

現在、次のパッケージ構造で作業しています。

/package
    __init__.py
    final.py
    /write
        __init__.py
        write.py
    /data
        backup.txt
        backup1.txt
        backup2.txt

final.py は write.py をインポートします。これにより、1 つのディレクトリに戻り、一連のバックアップ .txt ファイルを /data に書き込むことができます。

final.py は、別の呼び出し中に /data に入り、バックアップ ファイルにアクセスできる必要があるため、情報を /data に保存する必要があります。

  1. これがパッケージ ファイルの正しい階層であるべきかどうかわかりません。プロジェクトファイル全体がサーバーなどに移動された場合に、絶対ファイルパスを使用せずに、/write がそれ自体とは別のディレクトリブランチにテキストファイルを作成する方法.

  2. (backup.txtファイルが作成されたら)retrieve.pyを/dataに追加して、何らかのデータ構造で.txtファイルを返し、/dataをパッケージにするのは間違っていますか、または(2)final.pyにする必要があります/data を直接入力して、テキスト ファイルを取得します。

4

1 に答える 1

3
  1. IMOパッケージに書き込むべきではありません。パッケージの外部にある可能性のあるデータ ディレクトリに書き込むように、コードを設定します。多くのコード展開戦略は、コードが通常は書き込み不可のディレクトリにあることを前提としています。(たとえば、一般的な Linux ディストリビューション用にパッケージ化されている場合、コードは /usr/lib/python.../yourpackage/ に入り、データは /var/lib/yourpackage などに書き込まれます。)
  2. 必要な編成に応じて、retrieve.py を .../data の外、場合によっては .../read ディレクトリ、または final.py の横に配置します。

任意の場所に書き込むには、フル パスを に渡すだけopenです。たとえば、データ ディレクトリへのパスを定数に格納するとします。

DATA_PATH = '/var/lib/mypackage'

def backup():
    f = open(os.path.join(DATA_PATH, 'backup.txt'), 'w')
    f.write('some backup data...')
    f.close()
于 2012-06-14T20:22:47.103 に答える