#julia
#julia
Вопрос:
Мне нужно было получить несколько файлов xlsm с веб-страницы, на которой есть логин и пароль. Чтобы попасть туда, я нашел файл cookie аутентификации в своем веб-браузере и использовал HTTP.get
функцию следующим образом:
r = HTTP.get(url_file; cookies=Dict("FedAuth" => auth_cookie))
Как только я получил результат, я хотел бы его записать. Я пробовал использовать функцию записи и всевозможные форматы: .xlsx, xls, xlsm, csv, например:
write("dados_bdo.xlsm",r.body)
Файл был записан, и я смог открыть его с помощью libreoffice, однако, когда я пытаюсь прочитать с помощью Julia, используя CSV.read
, или XLSX.readxlsx
я получаю ошибки.
> XLSX.readxlsx("dados_bdo.xlsx")
ERROR: AssertionError: isempty(XML_GLOBAL_ERROR_STACK)
> CSV.read("dados_bdo.csv")
ERROR: ArgumentError: Symbol name may not contain
Это typeof(r.body)
Array{UInt8,1}
.
Я действительно думаю, что проблема заключается в письменной части, но я не знаю, как поступить по-другому.
Ответ №1:
Вы записываете байты правильно.
Я думаю, что для отладки вам следует изучить свои данные.
Для файла CSV вы всегда можете выполнить String(r.body) и посмотреть, что находится внутри строки. Одной из возможных проблем может быть использование некоторой кодировки символов, в этом случае вам следует использовать StringEncodings.jl
Что касается xlsm — файл Excel на самом деле представляет собой zip-файл с большим количеством XML-файлов внутри. Zip-файлы содержат суммы CRC. Следовательно, чтобы проверить правильность загрузки, попробуйте разархивировать его. Если распаковка dados_bdo.xlsm» завершается успешно, файл загружен и записан правильно, и проблема где-то в другом месте. Вы также можете попробовать прочитать этот файл через PyCall, используя одну из библиотек Python, и посмотреть, сохраняется ли проблема.
Ответ №2:
Поиск в Google по запросу «ОШИБКА: ошибка аргумента: имя символа может не содержать 0» выявляет эту проблему на github, которая предполагает, что вы должны попытаться использовать следующую опцию при чтении CSV:
CSV.read(file; normalizenames=true)
Не зная URL-адреса (и содержимого), который вы извлекаете, это лучший совет, который я могу дать. Если вы укажете URL-адрес, я (или кто-то другой) могу попытаться воспроизвести ошибку и точно объяснить, почему вы получаете ошибку.
Ответ №3:
Я думаю, моя проблема действительно в данных. Есть несколько файлов xlsm, которые я могу открыть с помощью XLSX.readxlsx(«data.xlsx «), и другие, которые создают ту же ошибку (ОШИБКА: ошибка утверждения: isempty(XML_GLOBAL_ERROR_STACK)).
Кроме того, после того, как я воспроизвожу эту ошибку в одном файле, я не могу открыть какой-либо другой файл, даже те, которые не воспроизводили никакой ошибки.
Я опубликую здесь ссылку на два файла одного и того же источника, один из которых выдает мне ошибку, а другой — нет.Google Диск: файл с ошибкой