Function factory?

MRAB python at mrabarnett.plus.com
Wed Oct 24 11:37:49 EDT 2018


On 2018-10-24 09:58, ftg at lutix.org wrote:
> Hello everyone,
> 
> I have 2 functions whose aim is to read a pdf file, the first one manages an uploaded file, the another one fecth a remote one (via an url).
> They are quite the same:
> ########################
> def handle_uploaded_file(path,file):
>      #if os.path.isfile(path + '/' + file.name):
>      #    file.name = '_' + file.name
> 
>      destination = open(path + '/' + file.name, 'wb+')
>      for chunk in file.chunks():
>          destination.write(chunk)
>      destination.close()
>      if check_file(path,file.name):
>          return True
>      else:
>          return False
> 
> def handle_remote_file(url,path,file_name=''):
>      if not file_name:
>          file_name = url.split('/')[-1]
> 
>      with urllib.request.urlopen(url) as response:
>          with open(path + '/' + file_name, 'wb+') as out_file:
>              shutil.copyfileobj(response, out_file)
>      if check_file(path,file_name):
>          return True
>      else:
>          return False
> ####################
> 
> I am wondering about the way I could rationalize those 2 functions.
> I have read about function factory and maybe it crosses my need.
> 
> Do you have some advices?
> 
> Thanks, best regards
> 
Replace:

     destination = open(path + '/' + file.name, 'wb+')
     for chunk in file.chunks():
         destination.write(chunk)
     destination.close()

with:

     with open(path + '/' + file.name, 'wb+') as destination:
         for chunk in file.chunks():
             destination.write(chunk)



More information about the Python-list mailing list