iT邦幫忙

1

請問python如何將csv檔寫入後,刪除不必要資料,寫出csv檔

小弟在練習處理csv文件時想要達到
1.將csv檔案中不要的欄位刪除只留要的

https://ithelp.ithome.com.tw/upload/images/20190211/20111112yHPzQoa5vx.jpg
2.'MAC_Address', 'Timestamp'保留這兩欄位,將這檔案寫出成csv

但寫不成功
https://ithelp.ithome.com.tw/upload/images/20190211/20111112uLtb3pJtH5.jpg

請問有大大能給予方法與建議完成嗎?
感激不盡!!

1 個回答

2
johnny12150
iT邦新手 5 級 ‧ 2019-02-12 10:15:26
最佳解答

感覺是for下面的縮排問題,不過截圖看不出是space/ tab
可以發現for裡面的writer是沒有讀到東西的

可以參考
https://stackoverflow.com/questions/18952716/valueerror-i-o-operation-on-closed-file

先在for裡面測試file是不是已經被close了


更新:
Python 3.1後可以這樣玩

https://stackoverflow.com/questions/1990373/nesting-with-statements-in-python

# 同時讀檔與寫檔
with open('a.csv') as f, open('b.csv', 'w', newline='') as f2:
    rows = csv.reader(f)
    writer = csv.writer(f2)
    writer.writerow(['test', 'test777'])
    
    for row in rows:
        writer.writerow(row)
看更多先前的回應...收起先前的回應...
kay_wu iT邦新手 5 級 ‧ 2019-02-12 14:20:11 檢舉

感謝大大回覆,
這兩張圖片是已經縮排都改成兩個空格的情況下~
剛剛測試確定file在for前已經被關掉了
想請問有沒有其他解決方法或者建議打法??

啊你下面for迴圈要寫入的是row不是rows

這個的錯誤原因應該是因為rows讀到的東西出了with後I/0執行週期結束了,所以無法被使用

kay_wu
已解決囉

kay_wu iT邦新手 5 級 ‧ 2019-03-01 10:34:00 檢舉

太厲害了~ 已解決!感謝您~

我要發表回答

立即登入回答