title: Create and write to new csv file during 'for' loop
body: <p>The code below is intended to create a csv file called 'file-0.csv' and start writing lines by iterating through the for loop until it reaches 100 lines. When the limit is reached, it should stop writing to 'file-0.csv', create 'file-1.csv', and <strong>continuing the for loop where it left off</strong>, start writing to 'file-1.csv' until it reaches 100 lines, and so on until the for loop is complete.</p>
  
  <p>The actual behavior of the code below (complete, and executable) is that it creates the new files as expected (4 total), but it continues to write all lines to 'file-0'....</p>
  
  <pre><code>##### Python 3.5 #####
  
  import csv
  
  rowCounter     = 0
  fileCounter    = 0
  List_A         = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
  List_B         = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
  List_C         = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
  
  
  def new_file():
      global fileCounter
      fileCounter += 1
      with open('file-' + str(fileCounter) + '.csv', 'w') as csvfile:
          rowWriter = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
  
  with open('file-' + str(fileCounter) + '.csv', 'w') as csvfile:
      rowWriter = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
  
      for word1 in List_A:
          for word2 in List_B:
              for word3 in List_C:
                  sentence = word1 + word2 + word3
                  rowWriter.writerow ([sentence])
  
                  rowCounter += 1
  
                  if rowCounter == 100:
                      new_file()
                      rowCounter = 0
                  else:
                      continue
  </code></pre>
  
  <p>Same code as above, but heavily commented:</p>
  
  <pre><code>##### Python 3.5 #####
  
  ######################
  ####### Setup ########
  ######################
  
  ### Use the CSV library
  import csv
  
  ### Initialize counters
  rowCounter     = 0
  fileCounter    = 0
  
  ### Create three lists of 'words'
  List_A         = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
  List_B         = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
  List_C         = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
  
  ### Function/subroutine that creates new CSV file with incremented filename
  def new_file():
      ### Make the variable 'fileCounter' usable by the function
      global fileCounter
      ### Add 1 to 'fileCounter'
      fileCounter += 1
      ### Create new CSV file using the value of 'fileCounter' as part of the name
      with open('file-' + str(fileCounter) + '.csv', 'w') as csvfile:
          rowWriter = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
  
  
  ######################
  #### Main Program ####
  ######################
  
  ### Create initial CSV file using the value of 'fileCounter' as part of the name
  with open('file-' + str(fileCounter) + '.csv', 'w') as csvfile:
      ### Create writer object and define how it should behave
      rowWriter = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_NONE)
  
      ### Create &amp; Write lines ###
      ### Nested 'for' loops to iterate through all combinations of words
      for word1 in List_A:
          for word2 in List_B:
              for word3 in List_C:
                  ### Build our 'sentence' from the current iteration
                  sentence = word1 + word2 + word3
                  ### Write 'sentence' to file
                  rowWriter.writerow ([sentence])
  
                  ### Increment row counter
                  rowCounter += 1
  
                  ### Check if value of rowCounter is 100 and if so, execute
                  ### 'new_file' and reset rowCounter to 0. If not, continue.
                  if rowCounter == 100:
                      new_file()
                      rowCounter = 0
                  else:
                      continue
  </code></pre>
  
  <p>I suspect the problem is 'rowWriter' not getting updated or passed back to the main loop properly, but I can't seem to figure out how to do it (and anyway, I'm not even sure if that's it).</p>
  
  <p>I've tried to document and make the code "generic" so others can get some use out of any answers. Any help is greatly appreciated.</p>