Source code for pyquickhelper.filehelper.transfer_api_file
"""
API to move files using FTP
:githublink:`%|py|5`
"""
import os
from ..loghelper import noLOG
from .transfer_api import TransferAPI
[docs]class TransferAPIFile(TransferAPI):
"""
Defines an API to transfer files over another location.
:githublink:`%|py|13`
"""
[docs] def __init__(self, location, fLOG=noLOG):
"""
:param location: location
:param fLOG: logging function
:githublink:`%|py|19`
"""
TransferAPI.__init__(self, fLOG=fLOG)
self._location = location
[docs] def transfer(self, path, data):
"""
It assumes a data holds in memory,
tansfer data to path.
:param data: bytes
:param path: path to remove location
:return: boolean
:githublink:`%|py|31`
"""
src = os.path.join(self._location, path)
fol = os.path.dirname(src)
if not os.path.exists(fol):
os.makedirs(fol)
with open(src, "wb") as f:
f.write(data)
return True
[docs] def retrieve(self, path, exc=True):
"""
Retrieves data from path.
:param path: remove location
:param exc: keep exception
:return: data
:githublink:`%|py|47`
"""
src = os.path.join(self._location, path)
if os.path.exists(src):
with open(src, "rb") as f:
return f.read()
elif exc:
raise FileNotFoundError(path)
else:
return None