2011-09-21 8 views
1

raw_filesというフォルダがあります。複数のソースからの非常に大きなファイル(〜100GBファイル)がこのフォルダにアップロードされます。ファイルがPythonでダウンロードを完了したかどうかを判断する方法

フォルダーへのアップロードが完了したビデオからファイル情報を取得する必要があります。ファイルが現在フォルダにダウンロードされているかどうか(パス)、またはビデオのダウンロードが完了したかどうかを判断する最善の方法は何ですか(スクリプトを実行する)?ありがとうございました。

+0

アップロードソフトウェアがスクリプトに通知(または実行)する必要があります。ファイルが「完成した」かどうかをプラットフォームに依存しない方法で表現することはできません。 –

+0

あなたの質問は[this stackoverflow post](http://stackoverflow.com/a/18744072/3511819)で答えられたと思います。 – AlexG

答えて

0

これらのファイルを確認する場合は、ファイルのサイズをどこかに保存してください。あなたが次のラウンドにいて、ファイルサイズが同じであれば、完了したとみなすことができます(1回目と2回目のチェックの時間に応じて)。時間間隔は、例えば、アップロードサービスのタイムアウト間隔(FTPなど)に設定します。

ファイルが完全であることを示す特別な記号やコンテンツはありません。

1

できるだけ信頼できる方法は、アップロードソフトウェアを変更することです。

典型的な方法は、各ファイルを最初に同じファイルシステムの一時ディレクトリにアップロードし、アップロードが完了したら最終的な場所に移動することです。このような「移動」操作は、安価で原子的である。

このテーマのバリエーションは、各ファイルを一時的な名前(例:file.datの代わりにfile.dat.incomplete)でアップロードして名前を変更することです。スクリプトでは、単に*.incompleteというファイルをスキップする必要があります。

+0

ファイルの移動はWindowsでは不可分ではないことに注意してください。 –

+0

@Sven Marnach:コメントありがとう。私は、同じファイルシステム**内のファイル移動**がWindows上で実質的に原子的でない実際の実際のシナリオについて聞くことに興味があります。また、 'MoveFileTransacted'があります。 – NPE

+0

http://stackoverflow.com/questions/167414/is-an-atomic-file-rename-with-overwrite-possible-on-windowsを参照してください。しかし、私はこれが手にした場合にはどんな競争条件も導入するとは思わない。 –

関連する問題