如何在读取excel文件时';正在编写什么(Python)?
我正在使用Python从网站上抓取姓名和电话号码。我用熊猫来写excel文件 一切正常,但我想知道如何读取文件,而它正在写入,它需要几个小时来完成从1000页的联系人写入,该文件只出现在我的文件夹中,一旦程序完成刮削所有指定的页面 我的代码如下所示:如何在读取excel文件时';正在编写什么(Python)?,python,file,write,Python,File,Write,我正在使用Python从网站上抓取姓名和电话号码。我用熊猫来写excel文件 一切正常,但我想知道如何读取文件,而它正在写入,它需要几个小时来完成从1000页的联系人写入,该文件只出现在我的文件夹中,一旦程序完成刮削所有指定的页面 我的代码如下所示: list=[] for contact in contacts: name = result.find_element_by_xpath('.//div/h2').text
list=[]
for contact in contacts:
name = result.find_element_by_xpath('.//div/h2').text
phone=result.find_element_by_xpath('.//ul[@class="phone"]/li')[0].text
list.append((name, phone))
df = pd.DataFrame(list, columns=['Name', 'Telephone'])
writer = pd.ExcelWriter('pandasS.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
简短回答:您无法在编写excel文件时读取它。至少,除非您将保存分离为多个部分,否则在打开文件时,您可能会遇到权限问题,并且您的代码正试图对其进行重写。不管怎样,我怀疑这里的瓶颈是你的
xlsxwriter
,而是联系人的解析。您可以在循环查看联系人时定期转储结果,以确保您拥有正确的信息(如果您想这样做)。此外,不要将列表
用作对象名称。它将隐藏内置的列表
对象,并导致后续行失败,例如列表(…)
将抛出错误。将其命名为lst=[]
或my_list=[]
等。另一种方法是,您可以使用xlwings
模块实时写入打开的Excel(因为似乎每次解析都只能写入有限的信息),这样您就可以看到实时更新的信息。但这是一个巨大的警告,因为在成功保存之前,您可能会丢失信息,并且数据可能会在不经意间在前端更新,从而覆盖脚本结果。我感谢您的帮助,事实上这正是我想要的,但Excel在填充3行后崩溃您是从xlwings
崩溃的吗?如果是这样的话,我可以看到,因为它增加了Excel对实时编写的响应的依赖性,并且你最终失去了我提到的进度。xlsxwriter
方法看起来不错,您只需等待它完成,或者将它分块转储。简短回答:您无法在编写excel文件时读取它。至少,除非您将保存分离为多个部分,否则在打开文件时,您可能会遇到权限问题,并且您的代码正试图对其进行重写。不管怎样,我怀疑这里的瓶颈是你的xlsxwriter
,而是联系人的解析。您可以在循环查看联系人时定期转储结果,以确保您拥有正确的信息(如果您想这样做)。此外,不要将列表
用作对象名称。它将隐藏内置的列表
对象,并导致后续行失败,例如列表(…)
将抛出错误。将其命名为lst=[]
或my_list=[]
等。另一种方法是,您可以使用xlwings
模块实时写入打开的Excel(因为似乎每次解析都只能写入有限的信息),这样您就可以看到实时更新的信息。但这是一个巨大的警告,因为在成功保存之前,您可能会丢失信息,并且数据可能会在不经意间在前端更新,从而覆盖脚本结果。我感谢您的帮助,事实上这正是我想要的,但Excel在填充3行后崩溃您是从xlwings
崩溃的吗?如果是这样的话,我可以看到,因为它增加了Excel对实时编写的响应的依赖性,并且你最终失去了我提到的进度。xlsxwriter
方法看起来很好,您只需等待它完成,或者将它分块转储。