【问题标题】:Is it possible to update an open CSV file?是否可以更新打开的 CSV 文件?
【发布时间】:2013-03-07 16:47:03
【问题描述】:

我有一个朋友,作为他工作的一部分,他必须过滤一些原始数据文本文件(实际上是从服务器发送的日志)。现在我建议使用 python 帮助他,到目前为止它并不太复杂。然而,当他告诉我一些数据必须手动添加时,我碰了壁。

所以我的第一个想法是也许我会创建一个 csv 文件,这在 python 中很容易处理,而且对于我的朋友来说看起来就像一个普通的 excel。每次新日志到达时,脚本都会将其名称更新到 csv 文件中,我的朋友可以轻松添加更多信息。每行看起来像这样:

日志名称, , , ,

留给我的朋友填补空白,然后他有第二个脚本来收集所有数据。但问题是——当你用 excel 打开一个 csv 文件时,你不能用 python 更新它。所以每次他想更新时,他都需要打开保存并关闭,打开保存并关闭。很头疼。

现在我知道这是 excel 而不是 csv 本身的问题,因为如果我使用 sublime 读取文件,它会在脚本运行后实时更新。 Excel 有一个共享选项,但它保留给 xls 文件而不是 csv。

我尝试在互联网上查找,发现了一些非常复杂的东西,并且说看起来不可能。有任何想法吗?

【问题讨论】:

  • 你必须使用 csv 的吗?还有许多其他选项可以存储为多个用户设计的数据..
  • 您所描述的是数据库存在的原因之一。 Python 内置了一个很棒的:SQLite...docs.python.org/2/library/sqlite3.html
  • 我明白,但我说的是之前的部分。我应该提到这个项目的另一部分是为他构建一个数据库和一个带有 django web 应用程序的漂亮演示文稿。这些数据最终会到达数据库,但我需要一些简单易用的东西来随时随地更新一些数据。我不想让他太难受。我想给他一个熟悉且非常简单的界面,尽可能简单。

标签: python excel csv


【解决方案1】:

根据您所说的,如果我要这样做,我将创建一个 Access 数据库并让您的 Python 脚本在其中插入和更新数据,然后让您的朋友通过 Access 本身进行手动操作。

查看PyODBC 以了解如何执行此操作 - 这里有很多问题以及连接到 Access 数据库的示例。

【讨论】:

  • 我从未使用过 Access,但我会检查一下,这听起来是个不错的解决方案。
【解决方案2】:

或者,如果您确实想使用 Excel,您可以尝试以下方法将日志数据插入到打开的 Excel 文档中。

import win32com.client
import time

xl = win32com.client.gencache.EnsureDispatch("Excel.Application")                             
xl.Visible = True
Workbook = xl.Workbooks.Add()
Sheets = Workbook.Sheets

for i in xrange(1, 1000):
    Sheets(1).Cells(i, 1).Value = 'LogFile' + str(i)
    #Simulate a delay in the next log being written
    time.sleep(5)

【讨论】:

  • 问题是,我知道如何使用 win32 api,并且我也有一些使用 xlrd 的经验,我知道这是一个可能的解决方案,但它又丑又乱。如果可能的话,我正在寻找一个更简单的解决方案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-21
  • 2013-04-16
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
相关资源
最近更新 更多