2013-03-07 75 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

相關問題