![](/img/trans.png)
[英]How to force a new line when appending to a csv using python pandas .to_csv
[英]to_csv append mode is not appending to next new line
我有一個名為test.csv
的csv,如下所示:
accuracy threshold trainingLabels
abc 0.506 15000
eew 18.12 15000
然后是一個名為summaryDF
的數據summaryDF
,如下所示:
accuracy threshold trainingLabels
def 0.116 342
dja 0.121 1271
我在做:
try:
if os.stat('test.csv').st_size > 0:
summaryDF.to_csv(path_or_buf=f, encoding='utf-8', mode='a', header=False)
f.close()
else:
print "empty file"
with open('test.csv', 'w+') as f:
summaryDF.to_csv(path_or_buf=f, encoding='utf-8')
f.close()
except OSError:
print "No file"
with open('test.csv', 'w+') as f:
summaryDF.to_csv(path_or_buf=f, encoding='utf-8')
f.close()
因為我希望我的文件是:
accuracy threshold trainingLabels
abc 0.506 15000
eew 18.12 15000
def 0.116 342
dja 0.121 1271
相反,它是:
accuracy threshold trainingLabels
abc 0.506 15000
eew 18.12 15000def 0.116 342
dja 0.121 1271
我該如何解決? 我猜測使用的是CSV to_csv
而不是to_csv
但顯然附加模式不會跳過現有文件的最后一行。
您在使用熊貓包嗎? 您在任何地方都不會提及。
熊貓不會自動添加新行,我不確定如何強制使用新行。 但是您可以這樣做:
f.write('\n')
summaryDF.to_csv(path_or_buf=f, mode='a', ...)
您的代碼中不相關的錯誤:
您似乎有一個名為f
的全局文件對象。
執行此操作時:
with open('test.csv', 'w+') as f:
...
f.close()
您要關閉的文件是您在with
塊中剛剛打開的文件。 您沒有關閉全局文件f
因為變量在該作用域中被f
所覆蓋。
這是你想要的嗎? 無論哪種方式,都沒有意義。 我們使用with
范圍的原因是避免必須顯式關閉文件。
您可以使用:
f = open('filename')
...
f.close()
要么
with open('filename') as f:
...
您不會關閉在with
塊中打開的文件。 使用with
塊還具有另一個優點,即使引發異常並且不執行以下代碼,文件也會被關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.