4 HCE project, Tools for get statistic variable main functional. 7 @file get_statistic_variable.py 8 @author Alexander Vybornyh <alexander.hce.cluster@gmail.com> 9 @link: http://hierarchical-cluster-engine.com/ 10 @copyright: Copyright © 2013-2017 IOIX Ukraine 11 @license: http://hierarchical-cluster-engine.com/license/ 21 from cement.core
import foundation
30 dirName = pattern = paramName =
None 32 app = foundation.CementApp(
'get_statistic_variable')
34 app.add_arg(
'-d',
'--dir', action=
'store', metavar=
'input_directory_name', help=
'input directory name', required=
True)
35 app.add_arg(
'-p',
'--pattern', action=
'store', metavar=
'pattern_file_name', help=
'pattern file name for search in dirrectory', required=
True)
36 app.add_arg(
'-n',
'--name', action=
'store', metavar=
'parameter_name', help=
'parameter name in found files', required=
True)
37 app.add_arg(
'-o',
'--output', action=
'store', metavar=
'output_file_name', help=
'output file name. If not set output in stdout')
40 dirName = app.pargs.dir
41 pattern = app.pargs.pattern
42 paramName = app.pargs.name
43 outputFile = app.pargs.output
if app.pargs.output
else None 46 return dirName, pattern, paramName, outputFile
57 if dirName
is not None and pattern
is not None:
59 files = os.listdir(dirName)
60 for fileName
in files:
61 fullName = dirName + os.sep + fileName
62 if os.path.isdir(fullName):
64 filesList += internalFilesList
66 if re.search(pattern, fullName, re.U + re.I)
is not None:
67 filesList.append(fullName)
83 fieldNamesList = path.split(delimiter)
84 for fieldName
in fieldNamesList:
85 if isinstance(ret, dict)
and fieldName
in ret:
87 elif isinstance(ret, list)
and fieldName.isdigit():
88 ret = ret[int(fieldName)]
102 with open(fileName)
as f:
103 dataDict = json.load(f)
106 except Exception, err:
107 sys.stderr.write(
"Extract data from % failed. Error: %s\n" % (fileName, str(err)))
119 if isinstance(jsonDict, dict):
120 jsonData = json.dumps(jsonDict)
122 if outputFile
is None:
123 sys.stdout.write(jsonData)
125 with open(outputFile,
'w')
as f:
128 except Exception, err:
129 sys.stderr.write(
"Ouput data failed. Error: %s\n" % str(err))
133 if __name__ ==
'__main__':
135 FILES_FIELD_NAME =
'files' 138 dirName, pattern, paramName, outputFile =
getArgs()
143 for fileName
in filesList:
145 filesDict[fileName] = value
150 jsonDict[paramName] = totalCount
151 jsonDict[FILES_FIELD_NAME] = filesDict
155 except Exception, err:
156 sys.stderr.write(
"Error: %s\n" % str(err))
def outputData(jsonDict, outputFile)
def getValueFromDict(path, itemObject, delimiter=':')
def getFilesList(dirName, pattern)
def extractData(fileName, paramName)