質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

35134閲覧

python csvファイルに新しい行を追記するには

watosar

総合スコア18

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2017/08/30 02:44

csvファイルに追記をするために
data=[B,10,0,10]
with open('data.csv', 'a') as f:
writer = csv.writer(f)
writer.writerow(data)
としたのですが、もともとのファイルに新しい行で追加されるのではなく、最終行に付け加える形で書き込まれてしまい困っております。

name,a,b,c
A,10,0,10
とあるのが、
name,a,b,c
A,10,0,10
B,10,0,10
としたいのに
name,a,b,c
A,10,0,10,B,10,0,10
となってしまいます。
改行を挟んでも、
name,a,b,c
A,10,0,10,"
",B,10,0,10
となりました

どうすれば新しい行で追記できるのでしょうか
教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2017/08/30 02:56

元々のdata.csvファイルの最後は、"0"ですか、それとも\r\nですか? csv.writer.writerowはデータを追記して、その最後に改行(\r\n)を付けます。改行を付けてからデータを追記する訳ではないので、確認させてください。
guest

回答2

0

ベストアンサー

元ファイルの最終行A,10,0,10に改行が入っていないと提示のような結果になりますので、まずは元ファイルの最終行に改行を入れてください。
また、writerow(にてlineterminator='\n'を指定することで、行毎に改行が入ります。

以下、Windows環境(改行はCR+LF)上での実行例です
元データ : data.csv

name,a,b,c(CR+LFあり) A,10,0,10(CR+LFあり)

Python

1import csv 2data1=['B',10,0,10] 3data2=['C',10,0,10] 4with open('data.csv', 'a') as f: 5 writer = csv.writer(f, lineterminator='\n') # 行末は改行 6 writer.writerow(data1) 7 writer.writerow(data2)

実行結果 : data.csv

name,a,b,c(CR+LFあり) A,10,0,10(CR+LFあり) B,10,0,10(CR+LFあり) C,10,0,10(CR+LFあり)

投稿2017/08/30 03:02

can110

総合スコア38268

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

csvファイルを一度読み込んでから、結合したデータを書き直すとう方法もありそうです。

python

1import csv 2 3with open('data.csv', 'r') as f: 4 reader = csv.reader(f) 5 data = [x for x in reader] 6 7data.append(['B', 10, 0, 10]) 8 9with open('data.csv', 'w') as f: 10 writer = csv.writer(f) 11 writer.writerows(data)

投稿2017/08/30 03:06

driller

総合スコア720

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問