すべてのサブフォルダーによって、親パス (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
前もって感謝します...