Смотреть внутри папки
Это мой текущий скрипт, который проверяет каталог на наличие имен папок, которые начинаются с цифр и имеют длину 5 цифр. Однако теперь я хочу проверить ВНУТРИ папки, которую я только что проверил. Небольшая помощь, пожалуйста?
directory = r'\\cd3\SFTP'
for folder in os.listdir(directory):
folder = folder.split(' - ')
#print fn
if 'infognana' in folder or 'sunriseimaging' in folder or 'mydatasolutions' in folder:
continue
if folder[0].isdigit() and len(folder[0]) == 5:
print folder
2 ответа
Как вы знаете, если у вас есть имя папки, то вы можете просто использовать os.listdir(folder_name)
"заглянуть внутрь"
Единственная проблема в вашем коде состоит в том, что вы теряете имя текущей просматриваемой папки, поскольку вы перезаписываете ее с результатом разделения:
folder = folder.split(' - ')
Если вы сохраните исходное имя папки, то вы можете вызвать os.listdir и выполнить ваши действия:
for folder_name in os.listdir(directory):
folder = folder_name.split(' - ')
#print fn
if 'infognana' in folder or 'sunriseimaging' in folder or 'mydatasolutions' in folder:
continue
if folder[0].isdigit() and len(folder[0]) == 5:
#do something on os.listdir(os.path.join(directory,folder_name))
print folder
Вот код, который рекурсивно сканирует ваши папки и печатает названия папок, которые начинаются с цифры и имеют длину 5 символов.
import os
def check(dir):
for f in [x for x in os.listdir(dir) if os.path.isdir(dir+"/{}".format(x))]:
if any([i in folder_name for i in \
['infognana', 'sunriseimaging', 'mydatasolutions']]):
if f[0].isdigit() and len(f)==5:
print f # print the name of the (sub)folder
check(os.path.join(dir, f) # do the same thing for this subfolder
Вы сказали, что хотите проверять папки (не файлы), поэтому нам нужно пропускать файлы. Это делается с помощью os.path.isdir
в приведенном выше коде строка 3.
Каждая подпапка печатается на тот случай, если ее часть удовлетворяет условиям, начинающимся с цифры и длиной 5 символов.
Я проверил и запустил приведенный выше код на Ubuntu 16.04, и он отлично работает.
Удачи:)