我有一個程序,我希望記錄發生的所有主要更改。例如:每當變量x的值發生變化時記錄變化的時間和變化本身。在程序中有很多這樣的變化,並不是所有的變量都有相同數量的參數。通過元組名稱將不同命名元組的列表傳遞給不同的csv
我決定使用namedtuples來存儲更改的每個實例,然後將這些namedtuples放入單個主數據列表中 - 準備導出到csv。我已經使用過元組,當然它們是不可變的,這對記錄保持是理想的。下面我試圖儘可能簡潔地解釋我所做的和嘗試過的事情。希望我的問題和嘗試到目前爲止是清楚的。
所以,我有:
data = []
作爲主存儲庫中,與以下形式的namedtuples:
a_tuple = namedtuple('x_change', ['Time', 'Change'])
another_tuple = namedtuple('y_change', ['Time', 'Change', 'id'])
我可以每次然後追加這些namedtuples的實例的變化使用檢測到的數據命令如下:
data.append(a_tuple(a_time, a_change))
data.append(another_tuple(a_time, a_change, an_id))
如果我然後打印出數據的內容,我會走出去把像:
x_change(a_time=4, a_change=1)
y_change(a_time=5, a_change=3, an_id = 2)
y_change(a_time=7, a_change=1, an_id = 3)
x_change(a_time=8, a_change=3)
我想要做的是通過元組名稱將這些元組導出到csv文件。所以在上面的情況下,我最終會得到兩個形式爲csv的文件:
name, time, change
x_change, 4, 1
x_change, 8, 3
and;
name, time, change, id
y_change, 5, 3, 2
y_change, 7, 1, 3
我不得不日期管理寫入到一個CSV如下:
with open ('events.csv', 'w', newline='') as csvfile:
output = csv.writer(csvfile, delimiter = ',')
for row in data:
output.writerow(row)
產生的輸出減去該元組的名稱。所以:
4, 1
5, 3, 2
7, 1, 3
8, 3
我也曾嘗試:
with open ('events.csv', 'w', newline='') as csvfile:
output = csv.writer(csvfile, delimiter = ',')
for row in data:
output.writerow(str(row))
其中由每個字符獲取(第一行只包括)將文件分割成CSV格式,包括元組的名稱,:
x, _, c, h, a, n, g, e, 4, 1
我已經搜索瞭解決方案,但沒有遇到任何符合我想要做的事情,而且現在處於虧損狀態。任何援助將不勝感激。
完美!我現在只需要弄清楚你所做的實際工作。謝謝。 – Pete