0

一部のログファイルのように、新しいファイルが生成されるたびに1つのディレクトリにあります。

私の目的は、10分間に生成されたファイルの量を取得することです。このような値をリアルタイムで取得するには、次のようにします。

00:00 ~ 00:10        10 files

00:10 ~ 00:20        23 files

...

23:50 ~ 23:59        12 files

したがって、私の考えは、Linuxシステムでcrontabタスクによって10分ごとに統計スクリプトを実行することです。初回実行スクリプトのロジック:。で現在のファイルリストを取得しますglob.glob("*")

Aとしましょう。次回(10分後)スクリプトを実行するglobと、現在のファイルリストBを取得するために再度実行されます。BではAがないので、金額を取得できるように別の値が必要です。実行する方法?別の良い方法があれば、共有してください。

4

2 に答える 2

3

セットを調べたい。あなたは次のようなことをすることができます:

setA = set(listA)
setB = set(listB)
new_list = list(setB - setA)

追加のセットロジックを実行して、削除されたファイルなどを識別することもできます。

于 2012-11-16T16:31:51.023 に答える
0

@tcaswellの回答にコメントしたように、Pythonの組み込みsetクラスを使用することは、このような問題を解決するための優れた方法です。これは、 TimGoldenのPythonStuffの記事「WatchaDirectoryforChanges」に大まかに基づいたサンプルコードです。

import os

firstime = False
path_to_watch = '.'

try:
    with open('filelist.txt', 'rt') as filelist:
        before = set(line.strip() for line in filelist)
except IOError:
    before = set(os.listdir(path_to_watch))
    firstime = True

if firstime:
    after = before
else:
    after = set(os.listdir(path_to_watch))
    added = after-before
    removed = before-after
    if added:
        print 'Added: ', ', '.join(added)
    if removed:
        print 'Removed: ', ', '.join(removed)

# replace/create filelist
with open('filelist.txt', 'wt') as filelist:
    filelist.write('\n'.join(after) + '\n')
于 2012-11-16T17:58:19.313 に答える