2017-07-20 228 views
0

我有一個Python腳本,告訴我是什麼「期間」(學校),然後輸出到CSV文件中:寫入使用Python一個CSV文件並添加數據

import datetime 
import csv 

format = "%H%M" 
today = datetime.datetime.today() 
s = today.strftime(format) 
period = 0 

ofile = open('Period.csv', "wb") 
writer = csv.writer(ofile, delimiter=',') 

if s > "0845" < "0945": 
period = 1 
if s >= "0945" < "1120": 
period = 2 
if s >= "1120" < "1220": 
period = 3 
if s >= "1220" < "1335": 
period = 4 
if s >= "1335" < "1430": 
period = 5 

print 
print s 
print period 

writer.writerow([period]) 
ofile.close() 

我有另一個Python一旦他們通過磁卡讀卡器刷他們的學生卡,然後將其輸出到CSV文件中,該腳本抓住學生的姓名。

我想要發生的是當他們刷卡時,他們的名字被導入到CSV中,然後週期被導入到它旁邊(例如john,4)。那麼接下來的學生將刷自己的卡和他們的名字和期限將在最後一個學生

John,4 
Marcus,4 

但每一個卡就刷卡CSV文件時被刪除,那麼當前學生的名字是隻剩下被放置在那裏。

import csv 
import datetime 

## EQ ID 

eqid = "john" ## Output from magnetic card reader 


## CSV writer 

ofile = open('attendance.csv', "wb") 
writer = csv.writer(ofile, delimiter=',') 
writer.writerow([eqid]) 
ofile.close() 

這只是一個臨時模擬,最終的代碼將包含兩個代碼。

TL; DR - 我如何讓Python將數據添加到CSV文件而不是隻是重寫整個文件?

+0

類似的問題在這裏檢查文件操作: https://stackoverflow.com/questions/4706499/how-do-you-append-to-a-file – Fosa

+3

在'打開CSV a +'模式 –

+0

*旁白*:'如果s>「0845」<「0945」:'不符合您的想法。也許你的意思是「如果」0845「

回答

0

但每次刷卡時,csv文件都會被擦除,然後當前學生的名字是唯一留下的。

這是因爲你每次刷卡的時間,這意味着創建一個新文件(具有相同名稱的現有文件將被刪除),寫作("wb")文件。所以你應該使用"ab"模式,它在現有文件中追加值。 所以行

ofile = open('attendance.csv', "wb") 

應改爲

ofile = open('attendance.csv', "ab") 

現在每次刷卡的值將被追加。

你可以在https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files

相關問題