2015-10-09 4 views
2

У меня есть большое количество файлов Excel, которые мне нужно загрузить из Интернета, а затем извлекать из заголовка (столбцов) только из заголовка и затем переходить. Пока мне удалось загрузить весь файл, а затем прочитать его в Pandas DF, из которого я могу извлечь имена столбцов.Читайте только заголовки файлов Excel

Есть ли более быстрый способ читать, а не загружать или анализировать только заголовок, а не весь файл Excel?

resp = requests.get(test_url) 

with open('test.xls', 'wb') as output: 
    output.write(resp.content) 


headers = pd.ExcelFile("test.xls").parse(sheetname = 2) 

headers.columns 

Если не является эффективным способом «частично» загрузить файл Excel, чтобы получить только заголовок, есть эффективный способ читать только заголовок после того, как она уже была загружена?

ответ

1

Я бы сказал, нет, потому что файлы xls Excel являются двоичными файлами. Поэтому парсер pandas ExcelFile нуждается в полном файле. Если вы дадите ему частичный файл, он должен сообщить о некорректном файле (по какой-то причине ...).

Если вы действительно хотите это сделать, вам придется тщательно проанализировать (в двоичной форме) некоторые файлы Excel, которые вы хотите обработать, и попытаться определить минимальный размер, необходимый для поиска имен в первой строке , Затем вы должны загрузить их, выполнив HTTP-протокол на достаточно низком уровне, чтобы иметь возможность закрыть соединение, или, по крайней мере, прекратить чтение, как только у вас будет достаточно байт. Наконец, вы должны просто написать выделенный синтаксический анализатор, надеясь, что в этих файлах ничего не изменится, потому что вы больше не используете поддерживаемые на высоком уровне инструменты для этого, а только двоичные чтения.

TL/DR: если у вас нет веских оснований для этого, просто забудьте об этом, потому что это будет трудно, склонно к ошибкам и вряд ли поддерживается, если только возможно.

+0

Я получаю то, что вы говорите о частичной загрузке файла excel, но как, после того, как весь файл был загружен, есть ли способ прочитать только строку заголовка файла, а не все это? – Josh

+1

@Josh: чтение локального файла обычно менее тяжелое, чем загрузка, поэтому вам не стоит об этом беспокоиться. Но оставшаяся часть моего сообщения по-прежнему действительна: либо вы полагаетесь на библиотеку высокого уровня, и ее задача - узнать, какую часть файла читать, или вы делаете это вручную, анализируя двоичные дампы, чтобы выполнить тяжелую работу самостоятельно. Мой совет ** НЕ НЕТ! **, возможное усиление после загрузки файла не стоит. –

+0

Как насчет конвертации в csv сначала через pandoc или что-то еще? – JasonAizkalns

Смежные вопросы