0

数千のファイルを含むディレクトリがあります。ファイル名に基づいてディレクトリに並べ替えたいのですが、多くのファイル名が非常に似ています。

私の考えでは、たくさんの正規表現文字列を作成してから、ある種のループを実行する必要があります。これは私の質問です:

これらの 2 つのオプションのうちの 1 つは、他のオプションよりも最適ですか? すべてのファイルをループし、各ファイルを正規表現と照合して、一致する数を追跡しますか? それとも反対のことをして、正規表現をループして各ファイルに触れますか?

それが私の最強の言語であるため、私はPythonでそれをしなければなりませんでしたが、私は他のアイデアを受け入れています。

4

1 に答える 1

0

これは、私があなたの目的のために変更した私のプログラムに使用するコードです。ディレクトリ(sort_dir)を取得し、そこにあるすべてのファイルに移動し、ファイル名に基づいてディレクトリを作成し、ファイルをそれらのディレクトリに移動します。ファイルをどこでどのようにソートするかについての情報を提供していないので、私が言及した場所にその部分を追加する必要があります。

def sort_files(sort_dir):

    for f in os.listdir(sort_dir):
        if not os.path.isfile(os.path.join(sort_dir, f)):
            continue

        # this is the folder names to be created, what do you want them to be?       
        destinationPath = os.path.join(sort_dir,f) #right now its just the filename...

        if not os.path.exists(destinationPath):
            os.mkdir(destinationPath)

        if os.path.exists(os.path.join(destinationPath,f)):
            at = True
            while at:
                try:
                    shutil.move(os.path.join(sort_dir,f), \
                                os.path.join(destinationPath,f))
                    at = False
                except:
                    continue
        else:
            shutil.move(os.path.join(sort_dir,f), destinationPath)
于 2012-08-02T07:14:15.197 に答える