我試圖用python記錄一些數據,我希望它在每次迭代中將一個數據點保存到文本文件中。在while循環中寫入python csv
所以目前我有
所以打印將理想變成了寫命令。 我檢查過這個網站,但似乎沒有支持while循環寫入命令(因爲它不斷地打開和關閉它)。
我試圖用python記錄一些數據,我希望它在每次迭代中將一個數據點保存到文本文件中。在while循環中寫入python csv
所以目前我有
所以打印將理想變成了寫命令。 我檢查過這個網站,但似乎沒有支持while循環寫入命令(因爲它不斷地打開和關閉它)。
關鍵是要打開的文件句柄和實例化的CSV作家外你的循環,但寫它內循環:
import csv
import time
HEADER = ['LIGHT', 'VOLTAGE']
# ...
def processing_loop(csvfile):
csv_writer = csv.writer(csvfile)
csv_writer.writerow(HEADER)
# ...
while True:
light = ReadChannel(light)
voltage = ConvertVoltage(light)
csv_writer.writerow([light, voltage])
csvfile.flush()
time.sleep(5)
with open('results.csv', 'w') as csvfile:
processing_loop(csvfile)
以方便您閱讀我分解出來的循環到它自己的函數中,該函數接受一個參數,一個打開的文件句柄,它可以用來創建CSV編寫器。
另請注意csvfile.flush()
- 如果您希望在每次迭代時立即將數據寫入文件,則這是必需的。否則,只有在文件關閉時纔會寫入(當您退出with
塊時,即終止腳本)。
我不知道你的意思是說什麼都不支持在循環內寫入。這當然是通常的做法:你在循環外部打開文件,在循環內連續寫入文件,然後關閉它。
with open('myfile.csv', 'w') as f
writer = csv.writer(f)
while True:
light = whatever
voltage = whatever
writer.writerow([light, voltage])
這種情況並不重要,但請嘗試發佈*工作*代碼。 'true'應該是'True','light'的第一次使用是未定義的,'time.delay'不存在。 –