簡體   English   中英

Python - 使用 csv writer 后 csv 文件為空

[英]Python - csv file is empty after using csv writer

Python新手在這里。 我試圖解決在更大的程序中編寫 csv 文件的問題,並決定回到基礎來嘗試找到問題。

我從 Python csv 讀寫文檔中運行了一個精確的代碼示例:

import csv     
spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ', quotechar='|')    
spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

當我轉到我的工作目錄並單擊“eggs.csv”時,文件為空被報告為“0 kb”。 在我的較大程序(空 csv 文件)中也發生了同樣的事情。 我錯過了一些完全明顯的東西嗎?

謝謝!

編輯
我只是嘗試將代碼修改為:

import csv
csvOut=open("eggs.csv", "wb")
spamWriter = csv.writer(csvOut, delimiter=' ', quotechar='|')
spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])
csvOut.close()

這奏效了。 我不確定為什么第一個對我不起作用。

我對csv模塊不太熟悉,但這看起來更像是文件 IO 問題而不是csv問題。

您在文件中看不到任何內容的原因是 python 仍然打開了該文件。 你需要關閉它。

所以,而不是這樣做:

spamWriter = csv.writer(open('eggs.csv', 'w'), delimiter=' ', quotechar='|')

改為這樣做:

f = open('eggs.csv', 'w')
spamWriter = csv.writer(f, delimiter=' ', quotechar='|')
# the rest of your code
f.close()

現在您應該在eggs.csv 中看到您想要的內容

希望這有幫助

這對派對來說有點晚了,但是我在單個評論之外還沒有看到的解決方案是使用withas 在這種情況下,它可能看起來像:

import csv     
with csv.writer(open('eggs.csv', 'w'), delimiter=' ', quotechar='|') as spamWriter:   
    spamWriter.writerow(['Spam'] * 5 + ['Baked Beans'])
    spamWriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam'])

我過去使用過這個,沒有任何問題。

該代碼有效。 您確定您的操作系統不只是將 CSV 大小四舍五入——畢竟,它只會是幾個字節!

您可以嘗試print(open("eggs.csv").read())以查看文件是否實際上是空的,或者more eggs.csv

您發布的代碼非常適合我。

您確定運行該腳本的目錄實際上就是您要檢查的目錄嗎? (你每次嘗試之前都刪除“eggs.gsv”嗎?)

我在 python 解釋器中嘗試了這個。 在第一段代碼中,我只有在退出 python 后(文件關閉時)才能看到 csv 中的內容。 當然,這與關閉文件有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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