1

以下のコードを使用して、すべてのディレクトリのリスト(テキストファイル)を再帰的に作成しています。何千ものサブディレクトリがあるので、何度もリストを作成したくはありませんが、前回リストしたときから新しく作成したものだけを更新/挿入したいと思います。

これを行う良い方法はありますか?

import os, sys
rootdir ="/store/user/"
myusers=['u1','u2','u3','u4','u5','u6','u7']

for myuser in myusers:
    rootuserdir=os.path.join(rootdir, myuser)
    for myRoot, mySubFolders, myFiles in os.walk(rootuserdir):
        for mySubFolder in mySubFolders:
            dirpath =  os.path.join(myRoot, mySubFolder)
            print dirpath
4

3 に答える 3

2

フォルダーのリストを段階的に更新しようとしても、何も保存されません。ファイルの途中から行を削除したり、行を挿入したりする効率的な方法はありません。リスト全体を単純に書き直すのが最も効率的であり、最も簡単な方法でもあります。

于 2012-07-26T16:17:54.213 に答える
0

1回限りのプロセスを実行して、ある種のデータベース(おそらくドキュメント指向のデータベース)に情報をキャッシュし、デーモンプロセスでpyinotifyを使用してデータベースの同期を保つことができます。

于 2012-07-26T16:33:30.533 に答える
0

ファイル内の特定のエントリを見つけようとすると、毎回リストを再作成するよりも多くのリソースが消費されます。

パフォーマンスを最適化するには、特定の領域に焦点を当てる前に、真のボトルネックがどこにあるかを常に判断してください。多くの場合、このアプローチを採用しないと、焦点が間違った場所に置かれます。

ボトルネックまたはホットスポットを特定することは、コードをリファクタリングする際の最初の重点領域の 1 つである必要があります。そうすることで、ROE が最も少なく、ROI が最も高い領域に確実に焦点を当てることができます。経験則では、プログラム全体または少なくともその重要な部分を少なくとも 2 倍高速化できる場合にのみ、コードのリファクタリングを試みる必要があります。もっと...

于 2012-07-26T16:19:01.217 に答える