62 lines
1.6 KiB
Python
Executable File
62 lines
1.6 KiB
Python
Executable File
import os
|
|
import tempfile
|
|
|
|
from documents import TEMPORARY_DIRECTORY
|
|
|
|
|
|
#http://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python
|
|
def copyfile(source, dest, buffer_size=1024*1024):
|
|
"""
|
|
Copy a file from source to dest. source and dest
|
|
can either be strings or any object with a read or
|
|
write method, like StringIO for example.
|
|
"""
|
|
if not hasattr(source, 'read'):
|
|
source = open(source, 'rb')
|
|
if not hasattr(dest, 'write'):
|
|
dest = open(dest, 'wb')
|
|
|
|
while 1:
|
|
copy_buffer = source.read(buffer_size)
|
|
if copy_buffer:
|
|
dest.write(copy_buffer)
|
|
else:
|
|
break
|
|
|
|
source.close()
|
|
dest.close()
|
|
|
|
|
|
def from_descriptor_to_tempfile(input_descriptor, filename, buffer_size=1024*1024):
|
|
path = os.path.join(TEMPORARY_DIRECTORY, filename)
|
|
|
|
output_descriptor = open(path, 'wb')
|
|
|
|
while 1:
|
|
copy_buffer = input_descriptor.read(buffer_size)
|
|
if copy_buffer:
|
|
output_descriptor.write(copy_buffer)
|
|
else:
|
|
break
|
|
|
|
input_descriptor.close()
|
|
output_descriptor.close()
|
|
return path
|
|
|
|
|
|
|
|
def from_descriptor_to_new_tempfile(input_descriptor, buffer_size=1024*1024):
|
|
output_descriptor, tmp_filename = tempfile.mkstemp()
|
|
|
|
while 1:
|
|
copy_buffer = input_descriptor.read(buffer_size)
|
|
if copy_buffer:
|
|
#output_descriptor.write(copy_buffer)
|
|
os.write(output_descriptor, copy_buffer)
|
|
else:
|
|
break
|
|
|
|
input_descriptor.close()
|
|
os.close(output_descriptor)
|
|
return tmp_filename
|