只读取 Excel 个文件中的 headers 个
Read only the headers of Excel files
我有大量 Excel 文件需要从网上下载,然后仅从中提取 header(列名),然后继续。到目前为止,我只设法下载了整个文件,然后将其读入 Pandas DF,我可以从中提取列名。
有没有比下载或解析 header 而不是整个 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
如果没有有效的方法 "partially" 下载 Excel 文件以仅获取 header,是否有有效的方法仅读取 header下载后?
我会说不,因为 xls Excel 文件是二进制文件。所以 pandas ExcelFile 的解析器需要一个完整的文件。如果你给它一个部分文件,它应该报告一个不正确的文件(出于某种原因......)。
如果你真的想这样做,你将不得不彻底分析(以二进制形式)你想要处理的一些 Excel 文件,并尝试确定你需要找到的最小大小第一行的名字。然后你应该通过在足够低的级别实现 http 协议来下载它们,以便能够关闭连接,或者至少在你有足够的字节时停止读取。最后,您只需编写一个专用的解析器,希望这些文件不会发生任何变化——因为您不再使用高级维护工具,而只使用二进制读取。
TL/DR:除非你有非常充分的理由这样做,否则忘记它,因为它很难,容易出错并且很难维护。
我有大量 Excel 文件需要从网上下载,然后仅从中提取 header(列名),然后继续。到目前为止,我只设法下载了整个文件,然后将其读入 Pandas DF,我可以从中提取列名。
有没有比下载或解析 header 而不是整个 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
如果没有有效的方法 "partially" 下载 Excel 文件以仅获取 header,是否有有效的方法仅读取 header下载后?
我会说不,因为 xls Excel 文件是二进制文件。所以 pandas ExcelFile 的解析器需要一个完整的文件。如果你给它一个部分文件,它应该报告一个不正确的文件(出于某种原因......)。
如果你真的想这样做,你将不得不彻底分析(以二进制形式)你想要处理的一些 Excel 文件,并尝试确定你需要找到的最小大小第一行的名字。然后你应该通过在足够低的级别实现 http 协议来下载它们,以便能够关闭连接,或者至少在你有足够的字节时停止读取。最后,您只需编写一个专用的解析器,希望这些文件不会发生任何变化——因为您不再使用高级维护工具,而只使用二进制读取。
TL/DR:除非你有非常充分的理由这样做,否则忘记它,因为它很难,容易出错并且很难维护。