SMBConnect имеет следующую функцию, listPath, которая перечисляет содержимое данного каталога.
listPath (service_name, path, search = 55, pattern = '*', timeout = 30) Получить список каталогов файлов/папок по пути
Параметры:
service_name (строка /unicode) - имя общей папки для путиpath (string/unicode) - путь относительно имени_имя, где нам интересно узнать о его файлах/подпапках.
search (integer) - целочисленное значение, составленное из бит-ИЛИ бит SMB_FILE_ATTRIBUTE_xxx (см. smb_constants.py). Значение по умолчанию для поиска будет запрашивать все доступные для чтения, скрытые, системные, архивные файлы и каталоги.
pattern (string/unicode) - фильтр для применения к результатам перед возвратом клиенту.
Возвращает:
Список экземпляров smb.base.SharedFile.
newConn=SMBConnection(arguments.username, password, DEFAULT_CLIENT_NAME, arguments.hostname, domain=arguments.domain,
use_ntlm_v2=True, is_direct_tcp=True)
assert newConn.connect(ip_address, 445, timeout=60)
files = newConn.listPath('C$', '/' + 'testing', '*.pdf')
for file in files:
print(file.filename)
Я не могу получить соответствие шаблону, чтобы изменить что-либо конкретное. Выше я хочу распечатать только те имена файлов, которые содержат ".pdf" в списке. Вместо этого, когда код выполняется, я просто получаю ВСЕ файлы. Ошибок нет. Я пробовал с и без "*" и ".". и получить те же результаты.
Таким образом, мы получили его для работы с классом re в качестве рабочего процесса из функции SMBConnection listPath, используя вариацию этого, которая работает с созданным объектом SMBConnection. функция ListPath все еще используется, но не является частью шаблона. Я построил структуру "If-else" для обработки ввода arg и регулярного выражения.
extensions = ['pdf', 'doc'] filenames = ['foobar.pdf', 'bar.doc'] for extension in extensions: compiled = re.compile('\.{0}$'.format(extension)) for filename in filenames: results = re.search(compiled, filename) print results
Вы можете использовать регулярное выражение .+\.pdf
. .+
: соответствует всем символам, за исключением символа новой строки 1 или более раз. \.pdf
: избегает символа dot
, так как .
символы имеют особое значение в регулярных выражениях и поиск pdf
после .