LoginSignup
3
3

More than 5 years have passed since last update.

pythonでcsvファイルに書き込みするところで、ちょっと間違えた結果納期に間に合わなかった話

Posted at

環境

MAC
python 2.7系

やりたいこと

ローカルに存在するcsvファイルに、新しい行を書き込んであげたかった。
なぜかこれが上手くいかなかったので、まとめてみる。

コード

import csv

c = csv.writer(open(path, 'w'))
lst = ['a','b','c','d']
lst.append('\n')
c.writerow(lst)

これで日本語ソースのサイトを見てみると上手く動くらしい。自分が試すと上手くいく時といかない時があったが、ほとんどの場合でアウト!

解決策

import csv

c = csv.writer(open(path, 'a'))
lst = ['a','b','c','d']
lst.append('\n')
c.writerow(lst)

open() のところのmode を'w' -> 'a'に直してあげた。
既存のファイルに書き込みたかっただけだから'a'で問題ないらしい。

日本語ソースを探せなかったググり力不足

ここのサイトに詳しい記述があった。

読み込み処理は一切行わずに書き込み処理のみを行うと、(そのままでは)ファイルの先頭からデータを上書きしていくが、書き込んだ長さが元のデータより短いと、書き込んだデータが終わったところより後ろは元のデータが残る。

なるほどぉ〜

結果

納期、間に合いませんでした。なんで間に合わなかったかというと、実行時間が長いから、スクリプト動かしたまま寝ちゃったんですね

朝起きたらcsvファイルが1行しか存在しなくて、絶叫してもう一回寝ました。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3