Source code for scibeam.util.folderstruct
# FolderStruct.py ---
#
# Filename: FolderStruct.py
# Description:
# Class FolderStruct
# ---------------------
# For folder structure analysis, regex indexing,
# file group and loading.
#
# Author: Yu Lu
# Email: yulu@utexas.edu
# Github: https://github.com/SuperYuLu
#
# Created: Fri Mar 23 23:02:05 2018 (-0500)
# Version: 0.1
# Last-Updated: Tue Aug 28 10:43:59 2018 (-0500)
# By: yulu
# Update #: 101
#
import os
import re
import numpy as np
from scibeam.core import base
[docs]class Folder(base.Defaults):
def __init__(self, pathStr):
self.path = pathStr
self.fileDict = None
@property
def path(self):
return self.__path
@path.setter
def path(self, pathStr):
if os.path.isdir(pathStr):
tempPath = pathStr.replace('\\','/')
self.__path = tempPath if tempPath[-1] == '/' else tempPath + '/'
else:
print("[!] %s is no recognized as a directory !" %pathStr)
print("If using Windows path, make sure using *raw* strings\n",
"e.g.: r'C:\folder\folder\folder' ")
raise FileNotFoundError
[docs] def query(self,regex = base.Defaults.file_regex):
result_dict = {}
result_dict['path'] = self.path
files = os.listdir(self.path)
reg = re.compile(regex)
for f in files:
mt = reg.match(f)
if mt == None:
continue
else:
kwd = mt.group(1)
whole = mt.group(0)
result_dict = base.buildDict(result_dict, kwd, whole)
self.fileDict = result_dict
return self
[docs]class FolderTools:
def __init__(self):
pass
[docs] @staticmethod
def query(path, regex = base.Defaults.file_regex):
result_dict = {}
result_dict['path'] = path
files = os.listdir(path)
reg = re.compile(regex)
for f in files:
mt = reg.match(f)
if mt == None:
continue
else:
kwd = mt.group(1)
whole = mt.group(0)
result_dict = base.buildDict(result_dict, kwd, whole)
fileDict = result_dict
return fileDict
[docs] def query_gen(path, regex = base.Defaults.file_regex):
files = os.listdir(path)
reg = re.compile(regex)
for f in files:
mt = reg.match(f)
if mt == None:
continue
else:
kwd = mt.group(1)
whole = mt.group(0)
yield base.pathJoin(path, whole)