-1

実行時にテキストファイルを変更する必要がありますが、後で元の状態に復元します(コンピューターがクラッシュした場合でも)。

私のプログラムは通常のセッションで実行されます。セッションが終了すると、そのファイルの元の状態を変更できますが、実行時に元の状態は変更されません。

いくつかのディレクトリに同じ名前のこのテキストファイルのインスタンスがいくつかあります。私のプログラムは各ディレクトリで実行されますが(並列ではありません)、ディレクトリの内容に応じて異なる動作をします。このような作業ディレクトリを選択する順序は完全に任意です。

ファイルの名前は各ディレクトリで同じであるため、バックアップされたファイルをわずかに異なる場所に保存することをお勧めします(つまり、親ディレクトリ名をバックアップターゲットパスに追加できます)。

私が今していることは、自己作成クラスを使用してファイルをバックアップおよび復元し、起動時に現在のディレクトリの以前のバックアップが適切に復元されたかどうかを確認することです。しかし、私の実装には深刻なリファクタリングが必要です。この種のタスク用にすでに実装されているライブラリがあるかどうかに興味があります。

編集

バージョン管理は良い考えのように思えますが、ネットワーク接続と多くの場合サーバーを必要とするため、実際には少しやり過ぎです。他のVCSでは、クライアントをインストールする必要があります。私は純粋なPythonソリューションの方が幸せですが、少なくともクロスプラットフォームで、移植性があり、十分に小さい必要があります(たとえば、<10mb)。

4

3 に答える 3

2

バージョン管理を実装する...svn(pysvnを参照)のように、リポジトリが同じサーバー上にある限り高速である必要があります...そしてファイルの任意のバージョンへのロールバックを許可します...多分やり過ぎですが、それはすべてを元に戻すことができます

http://pysvn.tigris.org/docs/pysvn_prog_guide.html

サーバーは必要ありません...ローカルバージョン管理が可能で、問題ないはずです...

于 2012-09-05T16:44:43.457 に答える
2

すべてのUNIX、Mac、ウィンドウファイルが何年にもわたって行ってきたことを実行しないのはなぜですか?ロックファイル/作業ファイルの概念を作成してください。

編集するファイルを選択した場合:

  1. アクティブなロックまたはクラッシュしたバックアップがあるかどうかを確認します。
  2. ファイルがロックまたはクラッシュした場合は、「回復」オプションを指定してください
  3. それ以外の場合は、ファイルの編集を開始します...

編集は、いくつかのことの1つ以上を行う傾向があります。

  1. 元のファイルを「。%(filename)s.backup」にコピーします
  2. 「。%(filename)s.lock」を作成して、他の人が作業できないようにします
  3. 編集が完了すると、ロックが解除され、.backupが削除されます

場合によっては、状況がわずかに逆転し、.backupがアクティブな編集である間、元の場所に留まります。成功すると、.backupが元のバックアップを置き換えます

Linuxボックスでviまたはその他のテキストプログラムをクラッシュさせると、これらのファイルが作成されたことがわかります。通常はドット(。)プレフィックスが付いているため、通常はコマンドラインで非表示になっていることに注意してください。Word/Powerpointなどはすべて同じようなことをします。

于 2012-09-05T17:12:28.280 に答える
1

Git、Subversion、Mercurialはあなたの友達です。

于 2012-09-05T16:46:12.923 に答える