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