【问题标题】:Python: Saving a file before loading it(Windows 7)Python:在加载文件之前保存文件(Windows 7)
【发布时间】:2013-09-25 04:59:58
【问题描述】:

基本上,我正在寻找一种方法来告诉我的程序在打开文件之前保存它。假设情况是我有一个不断手动写入的文本文件,但我的程序也在不断读取它。我如何告诉我的程序在每次打开文件之前保存文件?

我不能 100% 确定我是否说得通,如果需要任何澄清,我很乐意提供。

编辑:我正在使用 excel 文件,基本上,我将使用他们的 ID 登录到会议的用户将持续的用户数据输入到 excel 中。

下面是我的 while 循环,我在其中不断打开我的工作簿(excel 文件),然后在它发生变化时更新它。后来我写了一个输出文件,我在其中跟踪我的用户登录会议。

 try:
     while True:
            book2= open_workbook('IDS.xlsx')
            sheet2=book2.sheet_by_index(0)
            IDs2=UpdatePoints(value,IDs2)
            writeBook.save("Counted.xls")
            time.sleep(0.5)
except KeyboardInterrupt:
     print 'interrupted!'

如果有意义的话,我希望能够在打开“book2”之前保存它。

【问题讨论】:

  • 您需要澄清您的要求。你的程序是一边写一边读,还是另一个进程?
  • 恐怕你是对的,这个问题没有多大意义。你能澄清谁在写文件,谁在读吗?两者的过程是否相同?如果它是两个独立的进程,你是否同时控制它们?
  • 我对 Excel 编程了解不多,但我怀疑你需要从另一端接近它才能做你想做的事。您能否更改将数据添加到 excel 文件的方式,以便在每次添加后保存文件?我不认为从 Python 方面有任何简单的方法可以做到这一点,至少,不仅仅是触摸数据文件。另一方面,您可能需要将excel 标签添加到问题中。
  • 所以你的意思是你想强制Excel进程保存?它是否在同一主机上运行?您可能可以通过 DDE 执行此操作。我会质疑是否有比这更好的方法来解决这个问题。
  • 你们是对的,我从错误的角度处理问题。我会尝试找到一种方法让我的 excel 文件在每次更改后自动保存。谢谢!

标签: python windows excel file


【解决方案1】:

如果文件已被其他进程打开,您无法在程序打开文件之前告诉该进程保存更改。您的进程只能读取其他进程选择写入的更改。

听起来您所描述的是,有一个文件在一个正在更改文件的进程中打开 - 比如说用户正在文本编辑器中编辑的文本文件。同时,您希望您的进程打开正在更改的文件并能够读取对该文件的待处理更改。因此,您希望其他进程在您的进程打开文件之前“保存”或写出它的更改。这样,您的进程将看到对文件所做的更改。因此,您希望您的进程在“读取”文件之前“保存”文件。

不幸的是,这不是程序和文件交互的方式。只有当其他进程决定将更改写入文件时,您的进程才能看到更改。

【讨论】:

  • 我才意识到我的问题不是很聪明。你绝对明白了,并设法简洁地解释了为什么我的推理不合逻辑。所以谢谢!我会找到另一种在写作时自动保存的方法。
  • 您所需要的只是让用户在您的程序获得更新之前保存更改。我确信有一种方法可以在写入监视的文件时通过 Windows 通知您的程序。我不知道如何在 Python 中做到这一点,但也许你可以在另一个 SO question 中找到一些东西。
猜你喜欢
  • 1970-01-01
  • 2019-03-07
  • 2011-05-02
  • 2011-02-20
  • 2018-12-02
  • 1970-01-01
  • 2010-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多