Python 使用xlwings和excel,这两种方法中哪一种最快/首选?
我刚刚开始学习Python,正在使用xlwings编写excel电子表格。我对编码非常陌生(这是我的第一个问题),所以这可能是一个有点简单的问题,但任何评论都将非常感谢 我正在阅读一个网站(使用selenium和beautiful soup)的页面源代码,以获取有关产品的一些信息,例如价格和重量。然后我将这些值写入excel中的单元格 我有两种方法可以做到这一点——第一种是运行函数,然后将值写入excel,然后再转到下一个函数: (这些是主脚本的摘录-两种方法都可以)Python 使用xlwings和excel,这两种方法中哪一种最快/首选?,python,xlwings,Python,Xlwings,我刚刚开始学习Python,正在使用xlwings编写excel电子表格。我对编码非常陌生(这是我的第一个问题),所以这可能是一个有点简单的问题,但任何评论都将非常感谢 我正在阅读一个网站(使用selenium和beautiful soup)的页面源代码,以获取有关产品的一些信息,例如价格和重量。然后我将这些值写入excel中的单元格 我有两种方法可以做到这一点——第一种是运行函数,然后将值写入excel,然后再转到下一个函数: (这些是主脚本的摘录-两种方法都可以) 当rowNum
当rowNum
第二个函数运行所有函数,然后一次性将每个存储值写入excel:
while rowNum < lastRow + 1:
urlCellRef = (rowNum, colNum)
url = wb.sheets[0].range(urlCellRef).value
getPageSource()
getProductPrice()
getProductWeight()
getProductQuantity()
getProductCode()
itemPriceRef = (rowNum, colNum + 1)
wb.sheets[0].range(itemPriceRef).value = productPrice
itemWeightRef = (rowNum, colNum + 2)
wb.sheets[0].range(itemWeightRef).value = productWeight
itemQuantityRef = (rowNum, colNum + 4)
wb.sheets[0].range(itemQuantityRef).value = productQuantity
prodCodeRef = (rowNum, colNum + 6)
wb.sheets[0].range(prodCodeRef).value = productCode
rowNum = rowNum + 1
当rowNum
我想知道,做这件事的首选方法是什么?我还没有注意到速度上的差异,但是我的笔记本电脑速度非常慢,所以如果有一种方法被认为是最佳实践,那么我更愿意采用这种方法,因为我将增加使用的URL数量
非常感谢你的帮助 Excel调用的开销占主导地位。使用XLWings时,尽可能不频繁地写入电子表格
我发现使用Range对象重写整个工作表(或要更改的工作表区域)比编写单个单元格、行或列要快得多。如果我不做任何繁重的数据操作,我只使用嵌套列表——将子列表视为列或行(使用transpose选项)是否更好取决于您处理数据的方式。如果您正在处理更大的数据集或进行更密集的工作,您可能希望使用NumPy阵列或Panda。您好-谢谢您的建议!我现在正在学习列表,所以我将重新安排所有内容,以便最终写入excel时使用单个列表写入一个范围,而不是像当前那样依次写入每个单元格。我需要做一些关于NumPy和Panda的家庭作业,正如我看到他们提到的,但还没有使用它们。再次感谢你,理查德。
while rowNum < lastRow + 1:
urlCellRef = (rowNum, colNum)
url = wb.sheets[0].range(urlCellRef).value
getPageSource()
getProductPrice()
getProductWeight()
getProductQuantity()
getProductCode()
itemPriceRef = (rowNum, colNum + 1)
wb.sheets[0].range(itemPriceRef).value = productPrice
itemWeightRef = (rowNum, colNum + 2)
wb.sheets[0].range(itemWeightRef).value = productWeight
itemQuantityRef = (rowNum, colNum + 4)
wb.sheets[0].range(itemQuantityRef).value = productQuantity
prodCodeRef = (rowNum, colNum + 6)
wb.sheets[0].range(prodCodeRef).value = productCode
rowNum = rowNum + 1