如何在读取excel文件时';正在编写什么(Python)?

如何在读取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

我正在使用Python从网站上抓取姓名和电话号码。我用熊猫来写excel文件

一切正常,但我想知道如何读取文件,而它正在写入,它需要几个小时来完成从1000页的联系人写入,该文件只出现在我的文件夹中,一旦程序完成刮削所有指定的页面

我的代码如下所示:

    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
方法看起来很好,您只需等待它完成,或者将它分块转储。