フォルダー構造から MPTT を生成するためのこのアルゴリズムがあります: https://gist.github.com/unbracketed/946520
github で見つかり、私のニーズに完全に対応しています。現在、ツリー内のいくつかのフォルダーをスキップする機能を追加する必要があります。たとえば、/tmp/A/B1/C2 内/下のすべてをスキップしたい。したがって、私のツリーには C2 (C2 を含む) からは何も含まれません。
私はPythonでそれほど役に立たないので、そのクエリを作成しました(そして追加のリストを関数に渡しました):
def is_subdir(path, directory):
path = os.path.realpath(path)
directory = os.path.realpath(directory)
relative = os.path.relpath(path, directory)
return not relative.startswith(os.pardir + os.sep)
/Now we can add somewhere
for single in ignorelist:
if fsprocess.is_subdir(node,single):
しかし、私の質問は、関数のどこに固執するかです。私はこれを一番上にしようとしましたが、if do returnでしたが、アプリケーション全体を終了しました。それ自体を繰り返し呼び出すので、かなり迷っています。
良いアドバイスはありますか?所有者のないgithubでスクリプト作成者に連絡してみました。このアルゴリズムは非常にうまく機能し、時間を大幅に節約でき、プロジェクトの要件に最適です。