[問題] file.write 失效

看板Python作者 (啊斑斑)時間9年前 (2016/09/22 20:34), 編輯推噓0(0015)
留言15則, 3人參與, 最新討論串1/1
如題。 最近在寫一個程式,他的功能是比對兩個.csv文件中的內容,在特定欄位中有所關係的則是需要的,將該內容抓出來並記錄到新的.csv檔中。 但是不知道為什麼,在寫檔(file.write)的部分,總是不會執行,但如果把主要的判斷部分移開卻會執行……在想可能是我判斷的部分或記錄資料的部分有出問題,但找了一段時間都找不到。 之前有寫過一個類似功能但找尋資料和判斷方式略有不同的程式,可以正常運作,此篇也是沿用那個程式的程式碼。 * 程式碼: http://paste.ofcode.org/TtW9zF24BLKK49puM226UF ↑ 短網址:https://goo.gl/fg1c09 程式碼(前一個可正常運作的程式): http://paste.ofcode.org/F2TwhWpWCH7yYirFy53GYg ↑ 短網址:https://goo.gl/sTJ77g * 目前,出問題的那個程式能否正常判斷還不知道,但在判斷之前的: wFile.write("cardNo,in_tTime_1_hr,in_tTime_1_min,out_tTime_2_hr,out_tTime_2_min,routeNo_1,routeNo_2,") wFile.write("entryStationID_1,exitStationID_1,entryStationID_2,exitStationID_2,D_1,D_2,waitTime,") wFile.write("totalDis,totalTime\n") 這一段的write就已經失效了,而後面用於確認的print("-1")則會正常運作,甚至是兩個while中加入print也能正常運作。 倘若把while整個移除,則上述的write才會正常加入檔案中…… 我花了很多時間尋找問題,但都沒能找到問題點,希望有前輩可以指點一下Q_Q (我知道這個迴圈會重覆抓到同樣的結果,但急著抓出結果暫時不打算修正,後續會用Excel清掉重覆出現的結果) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.106.248 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1474547649.A.67F.html

09/23 00:43, , 1F
你的寫法,若csv檔第一欄是空白,會提早跳出while loop
09/23 00:43, 1F

09/23 01:01, , 2F
然後也要記得將fileALL.close()加入loop的結尾
09/23 01:01, 2F

09/23 16:43, , 3F
先謝謝前輩回應。兩個資料csv檔都確定有資料,除非前
09/23 16:43, 3F

09/23 16:44, , 4F
輩是指要加入資料的wFile指向的那個result.csv。
09/23 16:44, 4F

09/23 16:44, , 5F
fileALL.close稍後會去調整(剛上完課Q_Q")
09/23 16:44, 5F

09/23 22:28, , 6F
'w' 每次寫入都會從新檔寫入 而不是加在原本的後面
09/23 22:28, 6F

09/23 22:29, , 7F
一直蓋過去 應該只有56行的write會被留下來
09/23 22:29, 7F

09/23 22:29, , 8F
不知道這是不是你的問題 (如果要加在後面 用'a')
09/23 22:29, 8F

09/23 22:29, , 9F
若有再while loop內使用open()寫入檔案,第二個參數可
09/23 22:29, 9F

09/23 22:31, , 10F
加'a',不過你貼的code應該OK的
09/23 22:31, 10F

09/23 22:37, , 11F
抱歉 我發現我搞錯了 當我沒說QQ
09/23 22:37, 11F

10/06 00:48, , 12F
感謝各位的回應,後來調整很久才發現是csv裡面有些字
10/06 00:48, 12F

10/06 00:48, , 13F
元會讓程式炸掉(像是"),移除後同時改用print再複製貼
10/06 00:48, 13F

10/06 00:48, , 14F
上到記事本就沒問題了(後來再調整後測試write也沒問題
10/06 00:48, 14F

10/06 00:48, , 15F
)。感謝各位!
10/06 00:48, 15F
文章代碼(AID): #1Nuy_1P_ (Python)
文章代碼(AID): #1Nuy_1P_ (Python)