可以更新打开的CSV文件吗?

0 投票
2 回答
845 浏览
提问于 2025-04-17 18:17

我有一个朋友,他的工作需要处理一些原始数据文本文件(其实是从服务器发送来的日志)。我建议用Python来帮他处理这些数据,到目前为止还算简单。不过,当他告诉我有些数据必须手动添加时,我就遇到麻烦了。

我首先想到的是创建一个CSV文件,这样在Python中处理起来很方便,而且对我朋友来说看起来就像普通的Excel文件。每当有新的日志到达时,脚本就会把它的名字更新到CSV文件里,我的朋友可以轻松地添加更多信息。每一行大概是这样的:

logName, , , ,

这些空格留给我朋友填写,然后他还有第二个脚本来收集所有数据。但问题来了——当你用Excel打开CSV文件时,无法用Python更新它。所以每次他想更新的时候,都得打开、保存、再关闭,反复操作,真让人头疼。

我知道这是Excel的问题,而不是CSV本身的问题,因为如果我用Sublime打开文件,脚本运行后它会实时更新。Excel有一个共享选项,但只适用于xls文件,而不适用于csv。

我在网上查了一些资料,发现有些东西实在太复杂了,感觉几乎不可能解决。有没有什么好主意呢?

2 个回答

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)
0

根据你说的,如果我要这样做,我会创建一个Access数据库,然后让你的Python脚本负责插入和更新数据库里的数据,最后让你的朋友通过Access自己手动处理一些事情。

可以看看PyODBC,它可以教你怎么做到这一点——这里有很多关于如何连接Access数据库的问题和例子。

撰写回答