簡體   English   中英

Python:關閉一周后再寫入csv,然后打開新的csv文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM