2010-07-01 96 views
3

我有一個包含類似下面的數據文件:添加標題到文件

88_NPDJ 565 789 3434 54454 
98HGJDN 945 453 3453 23423 
... 
... 
... 

什麼來頭添加到該文件的最好方法?數據輸入到文件後。數據是製表符分隔的。

+1

你可以試着描述一下這個問題好一點嗎?你知道你想添加什麼標題,只是想知道如何編寫一個程序,將它們插入頂部?或者你需要以某種方式找出標題應該是什麼? – Weeble 2010-07-01 23:17:29

回答

9

最好的辦法是用fileinput

import fileinput 

headers = 'a b c d e'.split() 
for line in fileinput.input(['thefile.blah'], inplace=True): 
    if fileinput.isfirstline(): 
     print '\t'.join(headers) 
    print line, 
0

我假設您已經知道標題是什麼,並且您只是想以某種方式以編程方式將它們插入文件的頂部。

一種方法是將文件讀入內存,截斷它,寫入標題然後回寫文件的內容。如果文件很大,這可能效果不佳。如果是這種情況,那麼你可以將頭文件寫入一個新文件,然後從原始文件中讀取每行並將其附加到新文件中,最後重命名新文件以替換舊文件。得到的altering a file in place效果

+0

'fileinput'完成你所需要的所有工作,照顧所有的新文件,重命名等 - 沒有理由「手動」! - ) – 2010-07-01 23:24:17

+0

好,從來不知道!我已經編輯了我的答案,以免我的方式再次變得「最簡單」。 – Weeble 2010-07-02 11:13:36

1

哪種頭?例如:

type A  Type B Type C Type D Type E 
88_NPDJ 565 789 3434 54454 
98HGJDN 945 453 3453 23423 
... 
... 
... 

不是嗎?

您可以打開臨時文件,寫入標題,然後將文件的其餘部分附加到臨時文件。刪除原始文件並重命名臨時文件。像原來的一樣。

import os 
headers = ['type 1', 'type 2', 'insert more types'] 
filename = 'your/file/here' 
tmp = open('TMP', 'w') 
orig = open(filename, 'r') 
tmp.write('\t'.join(headers) + '\n') 
for line in orig.readlines(): 
    tmp.write(line) 
orig.close() 
tmp.close() 
os.remove(filename) 
os.rename('TMP', filename) 
相關問題