from os import replace, fspathfrom pathlib import PathXLS_DIR =Path(_conf.get('unv_dir'), 'cert_in')# sheet = _xl.open( Path(XLS_DIR) / f'{equip_serial_number}.xls')pattern ="*.xls"xls_files = []for currentFile in XLS_DIR.glob(pattern): xls_files.append(currentFile)count_all =len(xls_files)if count_all ==0:print(f"Нема жодного XLS-файлу у {XLS_DIR}")elif count_all ==1:print(f'Знайдено файл {xls_files[0]}') cnt4job =int(input(f'Почати обробку? (0/1) '))elif count_all >1:print(f'Знайдено {count_all} файлів') cnt4job =int(input(f'Скільки файлів обробити? (0-{count_all}) '))else: cnt4job =0print('Щось пішло не так...')print()i =0for xls_file in xls_files:if i < cnt4job: sheet = _xl.open(xls_file)create_pdf(sheet)# xls_file - це Path, а '.ready' - рядок. os.fspath - перетворює Path в рядокreplace(xls_file, Path( fspath(xls_file) +'.ready') ) i +=1print('Done')
Модуль glob знаходить усі імена шляхів, що відповідають заданому шаблону, згідно з правилами, що використовуються оболонкою Unix, хоча результати повертаються в довільному порядку. Розгортання тильди не виконується, але *, ?, і діапазони символів, виражені за допомогою [] , будуть правильно зіставлені. Це робиться шляхом спільного використання функцій os.scandir() і fnmatch.fnmatch() а не фактичного виклику підоболонки.