2016-08-13 5 views
0

私は同様の質問を見つけ、その中で提案された解決策を試してみましたが、私の問題を解決できないようです。私がしようとしているのは、本質的にはあるファイルから別のファイルにデータをコピーすることです。エラーではなく、私は 'line'変数が文字列であり、正しいデータを含んでいることを確認しています。ファイル。私は現在Python 2.7を使用しています。ファイルへのpythonの書き込みは行われません

私は、他の解決策が示唆しているように.flush()を追加しようとしましたが、成功しませんでした。私は、最初のforループの前に静的な文字列を書くと、実際にファイルに書き込むことを確認しました。私の疑惑は、両方のファイルを開いて、それらのいずれかを反復することと関係がありますが、私はこれの妥当性を確信しています。

with open("data/data.csv", 'w+') as data_file, open("data/raw/" + data_point + ".csv", 'r') as raw_file: 
    for line in raw_file: 
     line = line.split(',') 
     temp_date = datetime(int(line[0]), int(line[1]), int(line[2])) 
     if newest_date == datetime(1,1,1): 
      newest_date = temp_date 
     if temp_date < oldest_date: 
      oldest_date = temp_date 
     sorted_raw = [[float(line[4]), float(line[5])]] + sorted_raw 

    raw_file.seek(0) # reset read pointer 
    for line in raw_file: 
     data_file.write(line) 

EDIT:私は今、私のidiociesを実現します。私は基本的にこれの修正されたコピー貼り付けでしたが、書き込みがない2番目の未完成の機能を持っていました。ファイルを開く "w +"メソッドは毎回それをクリアしました。このコードブロックが終了した直後にこの2番目の関数が常に呼び出されたため、書かれたファイルを捕まえることはできませんでした。ノイズについてお詫び申し上げます。

+0

あなたのスクリプトと同じディレクトリに 'data'サブディレクトリがありますか? – Soviut

+0

はい、私はこれも現在Windows 10の下で実行されていることに注意してください。 – beeedy

+0

この種のケースでは丁寧なやり方があります(問題は完全に異なるため問題は残っていません) - このケースでは、低repユーザはupvoted回答が存在するときに自己削除できないので、ソビエトの協力が必要です。 –

答えて

1

最初のループでデータファイルに書き込むことができます。

with open("data/data.csv", 'w+') as data_file, open("data/raw/" + data_point + ".csv", 'r') as raw_file: 
    for line in raw_file: 
     line = line.split(',') 
     temp_date = datetime(int(line[0]), int(line[1]), int(line[2])) 
     if newest_date == datetime(1,1,1): 
      newest_date = temp_date 
     if temp_date < oldest_date: 
      oldest_date = temp_date 
     sorted_raw = [[float(line[4]), float(line[5])]] + sorted_raw 

     data_file.write(line) 
+0

パスタのエラーをコピーして、深刻なことを謝罪し、是正されました! (これは実際にコード内にはありません) – beeedy

+0

@beeedy私は私の答えを更新しました。 – Soviut

+0

オリジナルの投稿を編集しました。スクリプトの中に未完成のコードを残して、私の部分では完全な間違いでした。 – beeedy

関連する問題