[英]How To ' Write To New .CSV File' or "Save As New .CSV File' In python
[英]Python: Write to csv for a week close and open new csv file
尋找正確方向的觀點或提供幫助。 我知道這是我做錯的事情,但是我是新手,仍然在嘗試學習,因此總是需要和需要指導。
我查看了問題部分,但找不到有效的方法。 我嘗試了很多解決方案,但是它們沒有用,除非我做錯了。 我要做的是每隔一周寫一次csv,然后關閉文件並打開一個新文件。這是基於真實的日歷周。 我也遇到了麻煩。 我可以按我想要的方式打開並寫入文件,但無法在我想要的時間段內寫入。
這是我正在使用的代碼的一部分,在它之前有一些代碼,但是它只是打開獲取所需數據的iframe:
file_name = 'Tempdata.csv'
headers = (['Space', 'South Wall Int.','','','Space', 'South Wall Ext.')
headers2 =(['Timestamp','Time','Date','Temperature','Timestamp',
'Time','Date','Temperature'])
if os.path.isfile(file_name):
with open('Tempdata.csv', 'a', newline='') as f:
w = csv.writer(f)
line=()
for frag in data:
line+=frag
w.writerow(line)
else:
with open(file_name, 'w', newline='') as f:
w = csv.writer(f)
w.writerow(headers)
w.writerow(headers2)
line=()
for frag in data:
line+=frag
w.writerow(line)
nos=25 # Number of samples
req=5 # Sampling frequency
print("\nTemperature & timestamp, sampled every", freq, "seconds:")
while True:
for i in range(nos):
ts=driver.find_element_by_name("_lastUpdated").get_attribute
("value")
#print("\nTemperature: ", element.text, "read at:", ts)
time.sleep(freq)
driver.switch_to_default_content()
print ("Done.")
由於您的代碼並不完全是最小的,因此我沒有閱讀太多內容,而是按您的口頭描述進行了介紹。
我使用datetime
來獲取當前時間(包括日歷周)。 有新的一周時,我關閉舊的一周並打開一個新文件。 最后,我要等待60或59秒,具體取決於當前分鍾的秒數(實際操作需要一些時間,否則會累積時間)。
因此,如果用您的操作替換了write
-commands,這應該可以工作。
import datetime
import time
old_week = -1
writer = None
while True:
dt = datetime.datetime.now()
calendar_week = dt.isocalendar()[1]
minute = dt.minute
if calendar_week > old_week:
old_week = calendar_week
if writer is not None:
writer.close()
#replace accordingly
writer = open('log_%s.csv' % calendar_week, 'w')
writer.write('week; minute; actual\n')
#replace accordingly
writer.write('%s;%s;%s\n' % (calendar_week, minute, dt.isoformat()))
if dt.second < 30:
time.sleep(60)
else:
time.sleep(59)
writer.close()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.