我正在尝试创建两个python程序,即A和B。A将访问**'test.xlsx'(excel文件),创建一个名为' sheet1 '的工作表,并写入' sheet1 '。Python程序B将访问' test.xlsx'(excel文件),创建一个名为'sheet2'的工作表,并同时写入'sheet2'**。是否可以执行上述过程?
vngu2lb81#
为此,您必须防止两个程序同时访问该文件。例如,通过锁定文件。这一机制必须是双方的。
import os from time import sleep from os import path # xlsx lib FILENAME = 'test.xlsx' LOCK_FILENAME = f'.~{FILENAME}' while path.exists(LOCK_FILENAME): sleep(.1) with open(LOCK_FILENAME, 'w') as f: ... # do your code os.remove(LOCK_FILENAME)
dsekswqp2#
一般来说,在一个对象上执行的打开文件的操作是将它与一个真实的文件相关联。一个打开的文件在程序中由一个流来表示,在这个流对象上执行的任何输入或输出操作都将应用于与它相关联的物理文件。关闭文件(实际上是流)的动作结束关联;与文件系统的事务被终止,输入/输出可能不再在流上执行。Python不会刷新缓冲区--也就是说,向文件写入数据--直到它确定你已经完成写入,一种方法是关闭文件。如果你写入一个文件而没有关闭,数据将不会到达目标文件。当我们完成对一个文件的输入和输出操作时,我们将关闭它,以便通知操作系统,使其资源再次可用。有很多方法可以选择,您可以同步打开/关闭文件,也可以创建文件的副本,然后将其销毁。
2条答案
按热度按时间vngu2lb81#
为此,您必须防止两个程序同时访问该文件。
例如,通过锁定文件。
这一机制必须是双方的。
dsekswqp2#
一般来说,在一个对象上执行的打开文件的操作是将它与一个真实的文件相关联。一个打开的文件在程序中由一个流来表示,在这个流对象上执行的任何输入或输出操作都将应用于与它相关联的物理文件。
关闭文件(实际上是流)的动作结束关联;与文件系统的事务被终止,输入/输出可能不再在流上执行。Python不会刷新缓冲区--也就是说,向文件写入数据--直到它确定你已经完成写入,一种方法是关闭文件。如果你写入一个文件而没有关闭,数据将不会到达目标文件。
当我们完成对一个文件的输入和输出操作时,我们将关闭它,以便通知操作系统,使其资源再次可用。
有很多方法可以选择,您可以同步打开/关闭文件,也可以创建文件的副本,然后将其销毁。