2017-11-28 12 views
1

大量のデータを.csvファイルに書き込むスクリプトを作成しています。関心のあるユーザー間のデータ転送を容易にするために、ファイルあたりの行数に制限を設けたいと思います。たとえば、最初の100万レコードはsome_csv_file_1.csvに、2番目の100万レコードはsome_csv_file_2.csvに書き込まれます(すべてのレコードが書き込まれるまで)。Python CSVライターは、ファイルごとの行を自動的に制限し、新しいファイルを作成します。

私は仕事に次の取得しようとしています

import csv 
csv_record_counter = 1 
csv_file_counter = 1 

while csv_record_counter <= 1000000: 
    with open('some_csv_file_' + str(csv_file_counter) + '.csv', 'w') as csvfile: 
     output_writer = csv.writer(csvfile, lineterminator = "\n") 
     output_writer.writerow(['record']) 
     csv_record_counter += 1 
while not csv_record_counter <= 1000000: 
    csv_record_counter = 1 
    csv_file_counter += 1 

問題:レコードが1000000を超えて増加により、その後のファイルが作成されていません。スクリプトは元のファイルにレコードを追加し続けます。

+0

additional_file追加され、どこに問題がありますか? – user1767754

+0

このソリューションでは何が動作しませんか? – Markus

+0

申し訳ありません、編集されます。 – Daniel

答えて

0

最初にwhileループを作成し、「not」を削除します。 次に、whileループの代わりにfor-loopを使用して、csvを作成します。 さらに、csv_record_counterをリセットすることを忘れないでください。

import csv 
csv_record_counter = 1 

rows = #Your number of rows to process 

additional_file = 1 if rows/1000000 % 2 != 0 else 0 

for csv_file in range(1, int(rows/1000000) + 1 + additional_file): #Set rows as your maximum number of rows/This will return your number of csv to create 
    with open('some_csv_file_' + str(csv_file) + '.csv', 'w') as csvfile: 
     output_writer = csv.writer(csvfile, lineterminator = "\n") 
     output_writer.writerow(['record']) 
     csv_record_counter = 1 #Remove your "+" 
     while csv_record_counter <= 1000000: #Remove your "not" 
      csv_record_counter += 1 
      output_writer.writerow("your record") 

編集:

関連する問題