#pandas #typeerror #pathlib
#pandas #ошибка типа #pathlib
Вопрос:
Я пытаюсь прочитать html-файлы в pd.read_html(). Однако каждый файл .html находится в другом каталоге. Итак, я перебрал каждый каталог и поместил path/name
html_file_name
в список с именем html_paths
. Я хочу выполнить итерацию по этому списку и прочитать каждый HTML-файл в html_paths
с помощью pd.read_html()
Я попытался выполнить итерацию по html_paths следующим образом:
for I in range(len(html_paths)):
html_files = pd.read_html(html_paths[i])
Я также попытался глобализировать исходные html_paths, которые я настроил с помощью этого:
for I in path.glob('**/*.html'):
html_files = pd.read_html(i)
Любым способом, которым я пытаюсь выполнить итерацию по моему списку библиотек path, я получаю ошибку, похожую на TypeError: Cannot read object type 'WindowsPAth'
До сих пор я писал:
# initialize path
p = Path('C:pathtomotherdirectory')
# iterate over all directories within mother directory
# glob all html files
html_paths = [file for file in p.glob('**/*.html')
И теперь я хочу перебрать каждый файл в html_paths
и прочитать их в pd.read_html()
Ответ №1:
Ваш html_paths
список содержит объекты Path, а не строки, подобные ожидаемым read_html
. Попробуйте преобразовать его в строку:
for I in range(len(html_paths)):
html_files = pd.read_html(str(html_paths[I]))
Комментарии:
1. Похоже, что теперь это приводит к
ValueError
сообщению «таблицы не найдены»2. Вы уверены, что в HTML-файле, который вы пытаетесь проанализировать, есть таблица? Я не пользователь pandas. Похоже, ваша первая проблема решена, и у вас есть новая ошибка / вопрос, над которым нужно поработать.
3. О, подождите, я вижу, что могу использовать pd.read_html(), если я приведу html_paths в виде строки по одному индексу за раз (например, pd.read_html(str(html_paths[0])) дает мне желаемый результат). Однако, когда я пытаюсь выполнить итерацию по ним, как в вашем примере, выдается ошибка «Таблицы не найдены».
4. И отчасти моя проблема была решена, поскольку теперь я знаю, как преобразовать html_paths в строку, чтобы прочитать ее в функции pd.read_html(). Но основной смысл моего вопроса состоял в том, чтобы добраться до точки, где я мог перебирать каждый файл и считывать его в pandas. Кроме того, я уверен, что в каждом html-файле есть таблица. Я могу читать их по отдельности, просто возникают проблемы с их повторением.
5. У меня была опечатка в моем ответе, переменная цикла
I
была заглавной вfor I in
части, но не вhtml_paths[I]
части. Я исправил это в ответе.