[英]Writing to csv file in Python
我有的代碼
i = 0
while i < len(newsymbolslist):
time = 102030
data = 895.233
array = [time], [data]
with open('StockPrice.csv', 'wb') as file:
file_writer = csv.writer(file)
file_writer.writerow(array)
file.close()
i += 1
我是Python的新手,所以我不確定100%為什么前面的代碼只將數據輸入到第一行。 我的猜測是,因為我在每次迭代時打開文件,所以它不知道它不應該被覆蓋。 我知道如何從理論上解決它(如果那是問題)。 我只是在語法上遇到麻煩。
我的猜測:使用迭代(var i)計算文件應向下寫入多少行。
with open('StockPrice.csv', 'wb') as f:
file_writer = csv.writer(f)
for s in newsymbolslist:
time = 102030
data = 895.233
array = [time], [data]
file_writer.writerow(array)
您的第一個猜測是正確的:每次以'wb'
模式打開文件時,該文件都會被有效刪除(如果存在)並創建一個新的空文件。 因此,只有在上一次迭代中通過while-loop
寫入的內容會影響文件的內容。
解決方法是打開一次文件(在循環開始之前)。
請注意,使用with語句打開文件可確保Python離開with-block
時將關閉文件。 因此,您無需自己調用f.close()
。
從文檔中 :
模式最常用的值是
'r'
表示讀取,'w'
表示寫入( 如果文件已經存在 , 則將其截斷 ),以及'a'
表示附加(...)
如果要寫入現有文件的末尾,請在附加模式下使用'a'
打開它。 (盡管在這種情況下,是的,重組循環是更好的答案。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.