title: Python Error :UnboundLocalError: local variable 'f' referenced before assignment
body: <p>I'm trying to process some files using threading in Python.Some threads work fine with no error but some through the below exception</p>
  
  <pre><code>Exception in thread Thread-27484:
  Traceback (most recent call last):
    File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
      self.run()
    File "/usr/lib/python2.7/threading.py", line 504, in run
      self.__target(*self.__args, **self.__kwargs)
    File "script.py", line 62, in ProcessFile
      if f is not None:
  UnboundLocalError: local variable 'f' referenced before assignment
  </code></pre>
  
  <p>while running my program</p>
  
  <p>Here is Python function</p>
  
  <pre><code>def ProcessFile(fieldType,filePath,data):
      try:
          if fieldType == 'email':
              fname = 'email.txt'
          else:
              fname = 'address.txt'
          f1 = open(fname,'wb')
          for r in data[1:]:
              r[1] = randomData(fieldType)
              f1.write(r[1])
          f1.close()
  
          f = open(filePath,'wb')
  
          writer = csv.writer(f)
          writer.writerows(data)
          f.close()
          try:
              shutil.move(filePath,processedFileDirectory)
          except:
              if not os.path.exists(fileAlreadyExistDirectory):
                  os.makedirs(fileAlreadyExistDirectory)
              shutil.move(filePath,fileAlreadyExistDirectory)
      finally:
          if f is not None:
              f.close()
  </code></pre>
  
  <p>Here is how i'm calling the above function through threading</p>
  
  <pre><code>t = Thread(target=ProcessFile,args=(fieldType,filePath,data))
          t.start()
  </code></pre>