2016-11-01 11 views
0

私は、ウェブサイトから 気象情報を取り、毎日CSVファイルに入れるPythonスクリプトに取り組んでいます。Python、CSVファイルに新しい行を書く

私は以下の新しい情報を追加したいと思います。

これは私のCSV-追加-機能である:

def save_data(weatherdatasaved): 
filename = "weather.csv" 
header="Datum;Luft-Min;Luft-Max;Durchschn.Wassertemp;Barometer"+"\n" 
#Check whether the file exists 
if(os.path.exists(os.path.expanduser(filename))==False): 
    file = open(os.path.expanduser(filename),"wb") 
    file.write(bytes(header, encoding="ascii",errors="ignore")) 
    file.close() 

file = open(os.path.expanduser(filename),"a") 
i=0 
while (i < len(weatherdatasaved)): 
    if((i+1)==len(weatherdatasaved): 
     file.write(weatherdatasaved[i]+"\n") 
    else: 
     file.write(weatherdatasaved[i]+";") 
    i+=1 
file.close() 

私が得るもの:

Datum;Luft-Min;Luft-Max;Durchschn.Wassertemp;Barometer01.11.2016;9.5;6.8;12;1023.2 

私が欲しいもの:

Max;Durchschn.Wassertemp;Barometer 

01.11.2016;9.5;6.8;12;1023.2 

は、誰かが私を助けることができますか? ありがとうございました。

+0

CSVとして、セミコロンではなくカンマ区切りで区切ってください。 – ugoano

+0

@ugano残念ながら、CSVファイルのフォーマット方法についての合意はありません。だからあなたは好きなものを自由に使うことができます。 @derMatt WindowsやLinuxにはありますか?あなたの行が '\ n'で終わっていると思われますが、エディタはファイルを見るときに行を分割しません。 – swenzel

+0

私は 'bytes'クラスにあまり慣れていませんが、問題はその行にあると思われます。あなたは追加の引数なしでヘッダを書くだけでよいですか? – Repiklis

答えて

0

の代わりに、あなたはos.linebreak属性を使用することができます "のn \ rを\" を使用してみてください。たとえば :あなたのケースでは

import os 

multiline = 'line 1' + os.linesep + 'line 2' 

os.linesepを持つすべての\nを交換してください。

+0

ニース。どうもありがとうございました。 – derMatt

0

は、異なるOSで動作するために "\ n" は

関連する問題