[英]How to log and save file with date and timestamp in Python
我試圖通過外殼程序執行的Python代碼使用Raspberry Pi 3從DS18B20傳感器記錄溫度。
我想用時間戳記錄溫度,然后保存文件。
我目前正在將其保存為在代碼中輸入的文件名,但是我想用文件名中的日期和時間戳記錄該文件。
情況1:當我在代碼中放入文件名時,可以一遍又一遍地將數據追加到同一文件中,但是如果不編輯代碼就無法開始新的單獨日志記錄。
#Writes data to file
def write_temp(temperature):
with open("/home/pi/temp.csv", "a") as log:
log.write("{0},{1}\n".format(strftime("%Y-%m-%d %H:%M:%S"),str(temperature)))
問題在於該文件始終為temp.csv,並且每次都會附加數據。
情況2 :我嘗試從時間戳獲取文件名,但是每秒鍾都會生成一個新文件。
def write_temp(temperature):
filename1 = strftime("%Y-%m-%d %H:%M:%S")
#filename1 = sys.argv[1]
with open('%s.csv' % filename1, 'a') as log:
log.write("{0},{1}\n".format(strftime("%Y-%m-%d %H:%M:%S"),str(temperature)))
在上述情況下,我希望在每次記錄開始時或記錄結束時設置文件名。 我還想名保存為對數的DateTime,而不僅僅是日期時間。 我通過做('"Log-" + %s.csv' % filename1, 'a')
而不是('%s.csv' % filename1, 'a')
嘗試此操作,但是沒有解決。
理想情況:我希望文件名是WORD- DateTime ,其中WORD作為命令行參數發送,如下所示:
sudo python TTLogging.py WORD
您能指出我要去哪里了嗎? 如果需要的話,我可以分享我工作的全部代碼,因為這是一項學習練習。
嘗試:
with open('Log-%s.csv' % filename1, 'a') as log:
在情況2中 ,每次調用write_temp
,都會使用時間戳填充filename1
。
因此,考慮一下,例如,您在10:15:13 (hh:mm:ss)
調用了它,那么filename1
將是10-15-13.csv
。 當您在10:15:14
再次調用它時, filename1
將是10-15-14.csv
。
這就是為什么要創建新文件。
解決方案:從temp_write
取出filename1
,然后將filename作為參數傳遞給該函數。
from datetime import *
import sys
def write_temp(temperature,file_name):
print ("In write_temp function - "+file_name)
with open(file_name, 'a') as log:
log.write("{0},{1}\n".format(datetime.now().strftime("%Y-%m-%d %H:%M:%S"),str(temperature)))
arg = sys.argv[1]
filename1 = str(arg) + "-" + datetime.now().strftime("%Y-%m-%d-%H-%M-%S")+".csv"
print ("File name is "+filename1)
write_temp(1,filename1)
在控制台上輸出:
C:\Users\dinesh_pundkar\Desktop>python c.py LOG
File name is LOG-2016-09-27-11-03-16.csv
In write_temp function - LOG-2016-09-27-11-03-16.csv
C:\Users\dinesh_pundkar\Desktop>
LOG-TimeStamp.csv的輸出:
2016-09-27 10:47:06,1
2016-09-27 10:47:06,3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.