#python #excel #selenium
#python #excel #selenium
Вопрос:
Я обновил приведенный ниже код; в попытке разрешить моему скрипту перебирать несколько файлов в каталоге (в отличие от одного):
@classmethod
def find_file(cls):
all_files = list()
""""Finds the excel file to process"""
archive = ZipFile(config.FILE_LOCATION)
for file in archive.filelist:
if file.filename.__contains__('Horrible Data Site '):
all_files.append(archive.extract(file.filename, config.UNZIP_LOCATION))
return all_files
До объявления ‘ all files = list()
‘ выше в моем find_files
методе это работало с одним файлом в каталоге. Я добавил all_files
в попытке разрешить цикл по всем файлам в каталоге.
Кроме того, в приведенном ниже main.py
я просто добавил for
прямо перед PENDING_RECORDS
для этой цели.
"""Start Point"""
from data.find_pending_records import FindPendingRecords
from vital.vital_entry import VitalEntry
from time import sleep
if __name__ == "__main__":
try:
for PENDING_RECORDS in FindPendingRecords().get_excel_data():
# Do operations on PENDING_RECORDS
# Reads excel to map data from excel to vital
MAP_DATA = FindPendingRecords().get_mapping_data()
# Configures Driver
VITAL_ENTRY = VitalEntry()
# Start chrome and navigate to vital website
VITAL_ENTRY.instantiate_chrome()
# Begin processing Records
VITAL_ENTRY.process_records(PENDING_RECORDS, MAP_DATA)
print (PENDING_RECORDS)
print("All done")
except Exception as exc:
print(exc)
Добавление all_files()
и for
теперь выводит следующую ошибку в приглашении Anaconda:
(base) C:Python>python main.py
Invalid file path or buffer object type: <class 'list'>
это config.py
FILE_LOCATION = r"C:ZipDATA Docs.zip"
UNZIP_LOCATION = r"C:ZipPending"
VITAL_URL = 'http://horriblewebsite:8080/START'
HEADLESS = False
PROCESSORS = 4
MAPPING_DOC = ".//map/mappingDOC.xlsx"
Комментарии:
1. Почему
find_file
это метод класса? Вы никогда не используетеcls
в его определении. Также не ясно, гдеfind_file
используется. Вы также слишком много делаете вtry
блоке; мы понятия не имеем, что на самом деле вызывает то исключение, которое вы перехватываете. Избавьтесь отtry
/except
и покажите нам обратную трассировку, созданную неперехваченным исключением.2. Что
config.FILE_LOCATION
в этой функции? Этоstr
илиlist
?3.Кроме того, согласно документам
ZipFile
, поддерживаетсяwith
диспетчер контекста, и поэтому его следует использовать при открытии файла4. @PeterGibbons Можете ли вы заменить
print(exc)
наraise
и показать полную трассировку стека?print(exc)
усекает вывод