0

すべてのサブフォルダーによって、親パス (tutu) から os.walk する必要があります。それぞれの最も深いサブフォルダーには、コードで処理する必要があるファイルがあります。ファイルを含むすべての最も深いフォルダーのファイルの「レイアウト」は同じです: 1 つのファイル *.adf.txt、1 つのファイル *.idf.txt、1 つのファイル *.sdrf.txt、および 1 つ以上のファイル *.dat。 、写真が示すように。 ここに画像の説明を入力 私の問題は、osモジュールを使用して、親フォルダーからすべてのサブフォルダーに順番に反復する方法がわからないことです。os.walk の現在のサブフォルダーに対して、そのサブフォルダーが空の場合、そのサブフォルダー内のサブサブフォルダーが存在する場合は、そのサブフォルダーに進む関数が必要です。存在する場合は、そのファイル レイアウトが存在するかどうかを確認し (これは問題ありません...)、存在する場合は、コードを適用します (これも問題ありません)。そうでない場合、およびそのフォルダーにサブフォルダーがこれ以上ない場合は、親フォルダーに戻り、os.walk を次のサブフォルダーに移動します。これにより、すべてのサブフォルダーが親フォルダー (tutu) に移動します。再開するには、以下のような関数が必要です (python/imaginary コード ハイブリッドで記述):

for all folders in tutu:
    if os.havefiles in os.walk(current_path):#the 'havefiles' don´t exist, i think...
        for filename in os.walk(current_path):
            if 'adf' in filename:
                etc...
                #my code
    elif:
        while true:
            go deep
    else:
        os.chdir(parent_folder)

仕事をするために私のコードで呼び出すのが最善の定義だと思いますか?

もちろん、これは私が使用しようとしたコードですが、成功しませんでした:

import csv
import os
import fnmatch

abs_path=os.path.abspath('.')
for dirname, subdirs, filenames in os.walk('.'):
    # print path to all subdirectories first.
    for subdirname in subdirs:
        print os.path.join(dirname, subdirname), 'os.path.join(dirname, subdirname)'
        current_path= os.path.join(dirname, subdirname)
        os.chdir(current_path)
        for filename in os.walk(current_path):
            print filename, 'f in os.walk'
            if os.path.isdir(filename)==True:
                break
            elif os.path.isfile(filename)==True:
                print filename, 'file'
        #code here

前もって感謝します...

4

2 に答える 2