2

ユーザーがアップロードしたファイルのdjango app一部を解析します。ユーザーがアップロードしたファイルは、アプリで解析されずにサーバーに長時間残る可能性があります。多くのユーザーが大量にアップロードすると、サイズが大きくなる可能性があります。ファイルの。

アプリで最近解析されていないファイルを削除する必要があります-たとえば、not accessed for last 24 hoursこのように試しました

import os
import time

dirname = MEDIA_ROOT+my_folder
filenames = os.listdir(dirname)
filenames = [os.path.join(dirname,filename) for filename in filenames]
for filename in filenames:
    last_access = os.stat(filename).st_atime #secs since epoch
    rtime = time.asctime(time.localtime(last_access))
    print filename+'----'+rtime

これは、各ファイルの最終アクセス時間を示しています。しかし、ファイルアクセス時間が過去24時間以内であったかどうかをテストする方法がわかりません。誰かが私を助けてくれますか?

4

2 に答える 2

2

チェックアウトtime.time()。これにより、UTC時間で現在のタイムスタンプにアクセスできるようになります。次に、ファイルのタイムスタンプから現在のスタンプを差し引いて、24 * 60*60より大きいかどうかを確認できます。

http://docs.python.org/library/time.html#time.time

また、多くの場合、Linuxファイルシステムはnoatimeでマウントされているため、st_atime変数が設定されていない可能性があることに注意してください。ファイルシステムが常に記録された時間でマウントされることが100%確実でない限り、安全のためにst_mtimeを使用する必要があります。

これが実際の例であるはずですが、私はデバッグしていません。

import os
import time

dirname = MEDIA_ROOT+my_folder
filenames = os.listdir(dirname)
filenames = [os.path.join(dirname,filename) for filename in filenames]
for filename in filenames:
    last_access = os.stat(filename).st_mtime #secs since epoch
    timediff = time.gmtime() - last_access
    print filename+'----'+timediff
    if timediff > 24*60*60:
        print 'older than a day'
        # do your thing
于 2012-07-05T03:04:55.910 に答える
1

なぜ実際の日付を気にするのですか?かどうかを確認してくださいos.stat(filename).st_atime < time.time() - 24*60*60

于 2012-07-05T03:14:31.980 に答える