2013-03-07 46 views
0

我有一个朋友,作为他工作的一部分,他必须解决一些原始数据文本文件(实际上是从服务器发送的日志)的过滤问题。现在我建议用python帮助他,到目前为止它并不复杂。不过,当我告诉我一些数据需要手动添加时,我撞到了一堵砖墙。是否可以更新打开的CSV文件?

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

LOGNAME,,,,

空的空间留给我的朋友加满,然后他具备收集所有数据的第二脚本。但是这里有个问题 - 当你用excel打开一个csv文件时,你不能用python更新它。所以每次他想更新他需要打开保存并关闭时,打开保存并关闭。这很令人头疼。

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

我试着在网上找,发现一些非常复杂的东西,它说明看起来不可能。有任何想法吗?

+0

你必须使用csv's吗?还有许多其他选项可用于存储专为多个用户设计的数据。 – Richard 2013-03-07 16:54:09

+2

您所描述的是数据库存在的原因之一。 Python有一个伟大的内置:SQLite ... http://docs.python.org/2/library/sqlite3.html – bernie 2013-03-07 16:56:25

+0

我明白,但我在谈论那之前的那部分。我应该提到这个项目的另一部分是用django网络应用程序构建一个数据库和一个很好的演示文稿。这些数据最终会到达数据库,但我需要一些简单易用的方法来随时更新一些数据。我不想为他过分努力。我想给他一个熟悉且非常简单的界面,尽可能简单。 – 2013-03-07 17:40:41

回答

0

从你说的话,如果我要这样做,我会创建一个Access数据库,并让你的Python脚本插入并更新数据,然后让你的朋友通过Access本身做手动位。

看看PyODBC如何做到这一点 - 这里有很多关于连接到Access数据库的例子。

+0

我从来没有使用Access,但我会检查出来,这听起来像一个很好的解决方案。 – 2013-03-07 17:44:11

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

事情是,我知道如何使用win32 api,并且我也有一些xlrd的经验,我知道这是一个可能的解决方案,但它很丑陋和混乱。如果可能,我正在寻找更简单的解决方案 – 2013-03-07 17:35:47

相关问题