Запись результатов из os.walk и заканчивается в определенном месте массива
Я пытаюсь найти серию папок / подпапок, используя фильтры, а затем записать результаты. Это работает, если результаты записываются в один и тот же массив, но не может понять, как направить совпадения в определенные массивы. Спасибо за любые предложения.
matchlist = [ ['*.csv'], ['*.txt'], ['*.jpg'], ['*.png'] ]
filearray = [ [],[],[],[] ]
for root, dirs, files in os.walk(folderpath):
for file in files:
for entry in matchlist:
if file.endswith(entry):
filearray[TheAppropriateSubArray].append(os.path.join(root, file))
2 ответа
Решение
Ваш список матчей должен быть:
matchlist = ['.csv', '.txt', '.jpg', '.png']
Затем измените:
for entry in matchlist:
if file.endswith(entry):
filearray[TheAppropriateSubArray].append(os.path.join(root, file))
Для того, чтобы:
for i, entry in enumerate(matchlist):
if file.endswith(entry):
filearray[i].append(os.path.join(root, file))
Рассмотрите возможность использования словаря:
filearrays = { '.csv':[],'.txt':[],'.jpg':[],'.png':[] }
for root, dirs, files in os.walk(folderpath):
for file in files:
filename, fileext = os.path.splitext(file)
if fileext in filearrays:
filearrays[fileext].append(os.path.join(root, file))