python
  • csv
  • 2016-08-22 5 views 2 likes 
    2

    大きなCSVファイルを読み込んだ後にサブ(CSV)ファイルを書き込む単純なPythonスクリプトがあります。CSVファイルで完全な出力を得るためにPythonスクリプトを2回実行する必要がある

    import csv 
    import os 
    
    large_file = "D:\Total_data.csv" 
    
    with open(large_file, 'rb') as csvfile: 
    
        reader = csv.reader(csvfile, delimiter='|') 
    
        path = "D:/CSV_Files/" 
        if not os.path.exists(path): 
         os.makedirs(path) 
    
        writer1 = csv.writer(open(path+"A1_subfile"+".csv", 'wb'), delimiter = '|') 
    
        #writing data to the CSV file only if first column has value 'A1' 
        for row in reader: 
         if (row[0]=='A1'): 
          writer1.writerow(row) 
    csvfile.close() 
    

    私が直面しています問題は、私は初めてのスクリプトを実行すると、一部の行が(たとえばのみ96または97行が100行のうち、表示されます)A1_subfile.csvファイルには来ていないということです。

    2回目の正確なSAMEスクリプトを実行すると、すべての行がサブファイルに表示されます(現在100行すべてが表示されます)。

    初めて実行してから数分間待っても、新しいCSVファイルで完全な出力が得られません。 コードを2回だけ実行すれば、すぐに完全な出力を見ることができます。

    私は検索しましたが、この問題を乗り越えることはできませんでした。 これを克服するのを手伝ってください。

    +0

    なぜ 'with'を使用して1つのファイルを開きますが、他のファイルは開きませんか?ファイルを適切に閉じてください。 –

    +1

    [CSVWriterのデータをファイルに保存しない - WHY?](http://stackoverflow.com/questions/3976711/csvwriter-not-saving-data-to-file-why) – cdarke

    +1

    http:// stackoverflow。 com/questions/13675072/csvs-writerow-in-python-doesnt-work-most-of-timeおよびhttp://stackoverflow.com/questions/11454453/writing-csv-files-in-python-files-残っているのは空白の末尾にある – cdarke

    答えて

    -1

    私はこの問題を解決するためにさまざまな方法を無作為に試していました。面白いことに、このコードの関数を定義して関数を呼び出すと、問題は解決されます。

    def create_subfile(): 
    
        """ now same code as in question""" 
    
    create_subfile(); 
    

    誰もが直接実行時にコードの一部は、関数呼び出しを介して実行時に正常に動作し、動作しない理由を知っていますか?

    +0

    に記載されているように、flush()とclose()メソッドを使用しても問題は解決しません。出力ファイルのマネージャが質問を解決します。 – xmcp

    +0

    出力ファイルも閉じました。しかし、コードは関数内で記述されたときにのみ機能しました。そのような "奇妙な"解決策の理由を知らない – Aditya

    +0

    誰がこの回答を落としているのか分かりますか?なぜですか?私はそれが奇妙な解決策であることを知っていますが、それは問題の解決策です。 – Aditya

    関連する問題