本文整理汇总了Python中tvb.core.entities.file.files_helper.FilesHelper.unpack_zip方法的典型用法代码示例。如果您正苦于以下问题:Python FilesHelper.unpack_zip方法的具体用法?Python FilesHelper.unpack_zip怎么用?Python FilesHelper.unpack_zip使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tvb.core.entities.file.files_helper.FilesHelper
的用法示例。
在下文中一共展示了FilesHelper.unpack_zip方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: ImportService
# 需要导入模块: from tvb.core.entities.file.files_helper import FilesHelper [as 别名]
# 或者: from tvb.core.entities.file.files_helper.FilesHelper import unpack_zip [as 别名]
class ImportService():
"""
Service for importing TVB entities into system.
It supports TVB exported H5 files as input, but it should also handle H5 files
generated outside of TVB, as long as they respect the same structure.
"""
def __init__(self):
self.logger = get_logger(__name__)
self.user_id = None
self.files_helper = FilesHelper()
self.created_projects = []
def _download_and_unpack_project_zip(self, uploaded, uq_file_name, temp_folder):
if isinstance(uploaded, FieldStorage) or isinstance(uploaded, Part):
if not uploaded.file:
raise ProjectImportException("Please select the archive which contains the project structure.")
with open(uq_file_name, 'wb') as file_obj:
self.files_helper.copy_file(uploaded.file, file_obj)
else:
shutil.copy2(uploaded, uq_file_name)
try:
self.files_helper.unpack_zip(uq_file_name, temp_folder)
except FileStructureException, excep:
self.logger.exception(excep)
raise ProjectImportException("Bad ZIP archive provided. A TVB exported project is expected!")
示例2: introduce_unmapped_node
# 需要导入模块: from tvb.core.entities.file.files_helper import FilesHelper [as 别名]
# 或者: from tvb.core.entities.file.files_helper.FilesHelper import unpack_zip [as 别名]
def introduce_unmapped_node(out_pth, conn_zip_pth):
"""
Creates a connectivity with one extra node in the first position.
This node represents the unmapped regions.
:param out_pth: destination path
:param conn_zip_pth: connectivity zip path.
"""
fh = FilesHelper()
tmp_pth = os.path.splitext(out_pth)[0]
fh.check_created(tmp_pth)
files = fh.unpack_zip(conn_zip_pth, tmp_pth)
for file_name in files:
file_name_low = file_name.lower()
if "centres" in file_name_low:
with open(file_name) as f:
lines = f.readlines()
with open(file_name, "w") as f:
f.write("None 0.000000 0.000000 0.000000\n")
f.writelines(lines)
elif "weight" in file_name_low or "tract" in file_name_low:
with open(file_name) as f:
lines = f.readlines()
nr_regions = len(lines)
with open(file_name, "w") as f:
f.write(" 0.0000000e+00" * (nr_regions + 1) + "\n")
for line in lines:
f.write(" 0.0000000e+00" + line)
else:
raise Exception("this transformation does not support the file " + file_name)
fh.zip_folder(out_pth, tmp_pth)
fh.remove_folder(tmp_pth)
示例3: ImportService
# 需要导入模块: from tvb.core.entities.file.files_helper import FilesHelper [as 别名]
# 或者: from tvb.core.entities.file.files_helper.FilesHelper import unpack_zip [as 别名]
class ImportService(object):
"""
Service for importing TVB entities into system.
It supports TVB exported H5 files as input, but it should also handle H5 files
generated outside of TVB, as long as they respect the same structure.
"""
def __init__(self):
self.logger = get_logger(__name__)
self.user_id = None
self.files_helper = FilesHelper()
self.created_projects = []
def _download_and_unpack_project_zip(self, uploaded, uq_file_name, temp_folder):
if isinstance(uploaded, FieldStorage) or isinstance(uploaded, Part):
if not uploaded.file:
raise ProjectImportException("Please select the archive which contains the project structure.")
with open(uq_file_name, 'wb') as file_obj:
self.files_helper.copy_file(uploaded.file, file_obj)
else:
shutil.copy2(uploaded, uq_file_name)
try:
self.files_helper.unpack_zip(uq_file_name, temp_folder)
except FileStructureException as excep:
self.logger.exception(excep)
raise ProjectImportException("Bad ZIP archive provided. A TVB exported project is expected!")
@staticmethod
def _compute_unpack_path():
"""
:return: the name of the folder where to expand uploaded zip
"""
now = datetime.now()
date_str = "%d-%d-%d_%d-%d-%d_%d" % (now.year, now.month, now.day, now.hour,
now.minute, now.second, now.microsecond)
uq_name = "%s-ImportProject" % date_str
return os.path.join(TvbProfile.current.TVB_TEMP_FOLDER, uq_name)
@transactional
def import_project_structure(self, uploaded, user_id):
"""
Execute import operations:
1. check if ZIP or folder
2. find all project nodes
3. for each project node:
- create project
- create all operations
- import all images
- create all dataTypes
"""
self.user_id = user_id
self.created_projects = []
# Now compute the name of the folder where to explode uploaded ZIP file
temp_folder = self._compute_unpack_path()
uq_file_name = temp_folder + ".zip"
try:
self._download_and_unpack_project_zip(uploaded, uq_file_name, temp_folder)
self._import_projects_from_folder(temp_folder)
except Exception as excep:
self.logger.exception("Error encountered during import. Deleting projects created during this operation.")
# Remove project folders created so far.
# Note that using the project service to remove the projects will not work,
# because we do not have support for nested transaction.
# Removing from DB is not necessary because in transactional env a simple exception throw
# will erase everything to be inserted.
for project in self.created_projects:
project_path = os.path.join(TvbProfile.current.TVB_STORAGE, FilesHelper.PROJECTS_FOLDER, project.name)
shutil.rmtree(project_path)
raise ProjectImportException(str(excep))
finally:
# Now delete uploaded file
if os.path.exists(uq_file_name):
os.remove(uq_file_name)
# Now delete temporary folder where uploaded ZIP was exploded.
if os.path.exists(temp_folder):
shutil.rmtree(temp_folder)
@staticmethod
def _load_burst_info_from_json(project_path):
bursts_dict = {}
dt_mappings_dict = {}
bursts_file = os.path.join(project_path, BURST_INFO_FILE)
if os.path.isfile(bursts_file):
with open(bursts_file) as f:
bursts_info_dict = json.load(f)
bursts_dict = bursts_info_dict[BURSTS_DICT_KEY]
dt_mappings_dict = bursts_info_dict[DT_BURST_MAP]
#.........这里部分代码省略.........
示例4: ImportService
# 需要导入模块: from tvb.core.entities.file.files_helper import FilesHelper [as 别名]
# 或者: from tvb.core.entities.file.files_helper.FilesHelper import unpack_zip [as 别名]
class ImportService():
"""
Service for importing TVB entities into system.
It supports TVB exported H5 files as input, but it should also handle H5 files
generated outside of TVB, as long as they respect the same structure.
"""
def __init__(self):
self.logger = get_logger(__name__)
self.user_id = None
self.files_helper = FilesHelper()
self.created_projects = []
@transactional
def import_project_structure(self, uploaded, user_id):
"""
Execute import operations:
1. check if ZIP or folder
2. find all project nodes
3. for each project node:
- create project
- create all operations
- import all images
- create all dataTypes
"""
self.user_id = user_id
self.created_projects = []
# Now we compute the name of the file where to store uploaded project
now = datetime.now()
date_str = "%d-%d-%d_%d-%d-%d_%d" % (now.year, now.month, now.day, now.hour,
now.minute, now.second, now.microsecond)
uq_name = "%s-ImportProject" % date_str
uq_file_name = os.path.join(cfg.TVB_TEMP_FOLDER, uq_name + ".zip")
temp_folder = None
try:
if isinstance(uploaded, FieldStorage) or isinstance(uploaded, Part):
if uploaded.file:
file_obj = open(uq_file_name, 'wb')
file_obj.write(uploaded.file.read())
file_obj.close()
else:
raise ProjectImportException("Please select the archive which contains the project structure.")
else:
shutil.copyfile(uploaded, uq_file_name)
# Now compute the name of the folder where to explode uploaded ZIP file
temp_folder = os.path.join(cfg.TVB_TEMP_FOLDER, uq_name)
try:
self.files_helper.unpack_zip(uq_file_name, temp_folder)
except FileStructureException, excep:
self.logger.exception(excep)
raise ProjectImportException("Bad ZIP archive provided. A TVB exported project is expected!")
try:
self._import_project_from_folder(temp_folder)
except Exception, excep:
self.logger.exception(excep)
self.logger.debug("Error encountered during import. Deleting projects created during this operation.")
# Roll back projects created so far
project_service = ProjectService()
for project in self.created_projects:
project_service.remove_project(project.id)
raise ProjectImportException(str(excep))