Как установить соответствие шаблону в функции Python SMBCoonect listPath

1

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" в списке. Вместо этого, когда код выполняется, я просто получаю ВСЕ файлы. Ошибок нет. Я пробовал с и без "*" и ".". и получить те же результаты.

Теги:
python-3.x

2 ответа

0

Таким образом, мы получили его для работы с классом 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 
0

Вы можете использовать регулярное выражение .+\.pdf.

.+: соответствует всем символам, за исключением символа новой строки 1 или более раз.
\.pdf: избегает символа dot, так как . символы имеют особое значение в регулярных выражениях и поиск pdf после .

Ещё вопросы

Сообщество Overcoder
Наверх
Меню