是否可以更新打开的CSV文件?

时间:2013-03-07 16:47:03

标签: python excel csv

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

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

logName ,,,,

剩下的空格留给我的朋友填写,然后他有第二个脚本收集所有数据。但问题是 - 当你用excel打开一个csv文件时,你无法使用python更新它。因此,每当他想要更新时,他需要打开保存并关闭,打开保存并关闭。这很头疼。

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

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

2 个答案:

答案 0 :(得分:0)

如果我要说的话,我会创建一个Access数据库并让你的Python脚本插入并更新其中的数据,然后让你的朋友通过Access自己做手册。

请查看PyODBC了解如何执行此操作 - 此处有许多问题,其中包含连接到Access数据库的示例。

答案 1 :(得分:0)

或者,如果您确实想要使用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)