Browse Source

test and corrections

master
Ulrich Carmesin 3 years ago
parent
commit
21d0813e9b
  1. 17
      basic/componentHandling.py
  2. 8
      basic/message.py
  3. 24
      compare_testcase.py
  4. 16
      init_testcase.py
  5. 73
      utils/file_tool.py
  6. 14
      utils/path_tool.py
  7. 25
      utils/report_tool.py
  8. 57
      utils/zip_tool.py

17
basic/componentHandling.py

@ -70,6 +70,7 @@ class ComponentManager:
job = basic.program.Job.getInstance() job = basic.program.Job.getInstance()
job.m.logDebug("applicationscomponente -- " + str(type(job.par))) job.m.logDebug("applicationscomponente -- " + str(type(job.par)))
self.components = {} self.components = {}
ComponentManager.__instance = self
print ("init ComponentHandling "+str(self)) print ("init ComponentHandling "+str(self))
def initComponents(self): def initComponents(self):
@ -109,9 +110,11 @@ class ComponentManager:
return out return out
@staticmethod @staticmethod
def getInstance(): def getInstance(init="N"):
if (ComponentManager.__instance is not None): if (ComponentManager.__instance is not None):
return ComponentManager.__instance return ComponentManager.__instance
elif (init != "N"):
return ComponentManager()
else: else:
raise Exception("Klasse noch nicht initialisiert") raise Exception("Klasse noch nicht initialisiert")
@ -186,9 +189,14 @@ class ComponentManager:
if B.SUBJECT_ARTS in c.conf and B.TOPIC_NODE_DB in c.conf[B.SUBJECT_ARTS]: if B.SUBJECT_ARTS in c.conf and B.TOPIC_NODE_DB in c.conf[B.SUBJECT_ARTS]:
if not B.DATA_NODE_DDL in c.conf: if not B.DATA_NODE_DDL in c.conf:
c.conf[B.DATA_NODE_DDL] = {} c.conf[B.DATA_NODE_DDL] = {}
for table in c.conf[B.SUBJECT_ARTS][B.SUBJECT_ARTS]: for table in c.conf[B.SUBJECT_ARTS][B.TOPIC_NODE_DB]:
if table in ["type"]:
continue
conf = utils.config_tool.getConfig("DATASTRUCTURE", c.name, table) conf = utils.config_tool.getConfig("DATASTRUCTURE", c.name, table)
c.conf[B.DATA_NODE_DDL][table] = conf if "tabelle" in conf and table in conf["tabelle"]:
c.conf[B.DATA_NODE_DDL][table] = conf["tabelle"][table]
else:
c.conf[B.DATA_NODE_DDL][table] = conf
comps[name] = c comps[name] = c
return c return c
@ -225,11 +233,8 @@ def getComponentDict():
out = {} out = {}
for c in comps: for c in comps:
out[comps[c].name] = {} out[comps[c].name] = {}
print("getCompDict " + comps[c].name)
for k in comps[c].conf.keys(): for k in comps[c].conf.keys():
print("getCompDict " + k)
if isParameterSubnode(k): # "artifact" in k or "components" in k or "instance" in k: if isParameterSubnode(k): # "artifact" in k or "components" in k or "instance" in k:
print("getCompDict -b- " + k)
out[comps[c].name][k] = copy.deepcopy(comps[c].conf[k]) out[comps[c].name][k] = copy.deepcopy(comps[c].conf[k])
return out return out

8
basic/message.py

@ -75,7 +75,10 @@ class Message:
else: else:
debugpath = job.conf.confs["paths"]["debugs"] + "/debug_" + logTime[0:-4] + "00.txt" debugpath = job.conf.confs["paths"]["debugs"] + "/debug_" + logTime[0:-4] + "00.txt"
print ("debugpathx "+debugpath) print ("debugpathx "+debugpath)
self.debugfile = open(debugpath, "a") if os.path.exists(debugpath):
self.debugfile = open(debugpath, "a")
else:
self.debugfile = open(debugpath, "w")
self.debug(verify, "> > > debugfile geoeffnet zu " + job.program + " mit " + debugpath) self.debug(verify, "> > > debugfile geoeffnet zu " + job.program + " mit " + debugpath)
# init logfile - except for components or unittest # init logfile - except for components or unittest
self.logDebug("logfile " + str(componente) + ", " + str(job.par.basedir)) self.logDebug("logfile " + str(componente) + ", " + str(job.par.basedir))
@ -231,6 +234,9 @@ class Message:
if (int(prio) < int(self.level)+1) : #and self.debugfile.closed == False: if (int(prio) < int(self.level)+1) : #and self.debugfile.closed == False:
self.debugfile.write(text + "\n") self.debugfile.write(text + "\n")
def resetLog(self):
self.messages = []
def merge(self, submsg): def merge(self, submsg):
self.setRc(submsg.getFinalRc(), submsg.topmessage) self.setRc(submsg.getFinalRc(), submsg.topmessage)
text = "\n".join(submsg.messages) text = "\n".join(submsg.messages)

24
compare_testcase.py

@ -1,34 +1,38 @@
# This is a sample Python script. # This is a sample Python script.
import sys# import sys#
# import jsonpickle # pip install jsonpickle import os
import yaml # pip install pyyaml
import basic.program as program import basic.program as program
import utils.tdata_tool import utils.tdata_tool
from basic.componentHandling import ComponentManager import utils.report_tool
import utils.path_tool
import utils.file_tool
import basic.componentHandling
import basic.message as message import basic.message as message
# Press Umschalt+F10 to execute it or replace it with your code. # Press Umschalt+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. # Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
PROGRAM_NAME = "init_testcase" PROGRAM_NAME = "compare_testcase"
def start(job): def startPyJob(job):
cm = ComponentManager() cm = basic.componentHandling.ComponentManager("init")
print("cm "+str(cm)) print("cm "+str(cm))
cm.initComponents() cm.initComponents()
comps = cm.getComponents(PROGRAM_NAME) comps = cm.getComponents(PROGRAM_NAME)
job.m.setMsg("# Components initialized with these relevant components " + str(comps)) job.m.setMsg("# Components initialized with these relevant components " + str(comps))
report = utils.report_tool.Report()
testdata = utils.tdata_tool.getTestdata() testdata = utils.tdata_tool.getTestdata()
for c in comps: for c in comps:
comp = cm.getComponent(c) comp = cm.getComponent(c)
comp.m.logInfo("------- "+comp.name+" ----------------------------------------") comp.m.logInfo("------- "+comp.name+" ----------------------------------------")
comp.reset_TData("testcase") comp.compare_TcResults(report)
comp.load_TData("testcase", testdata)
comp.read_TData("testcase")
comp.m.logInfo("------- "+comp.name+" ----------------------------------------") comp.m.logInfo("------- "+comp.name+" ----------------------------------------")
job.m.merge(comp.m) job.m.merge(comp.m)
print(str(comp)) print(str(comp))
comp.conf["function"][PROGRAM_NAME] = comp.m.topmessage comp.conf["function"][PROGRAM_NAME] = comp.m.topmessage
text = report.reportTestcase(job.par.testcase)
path = os.path.join(job.par.tcdir, "Result.html")
utils.file_tool.writeFileText(job.m, path, text)
# Press the green button in the gutter to run the script. # Press the green button in the gutter to run the script.
if __name__ == '__main__': if __name__ == '__main__':
@ -41,6 +45,6 @@ if __name__ == '__main__':
if x.m.isRc("fatal"): if x.m.isRc("fatal"):
x.stopJob() x.stopJob()
exit(x.m.rc * (-1) + 3) exit(x.m.rc * (-1) + 3)
start(x) startPyJob(x)
x.stopJob() x.stopJob()
# See PyCharm help at https://www.jetbrains.com/help/pycharm/ # See PyCharm help at https://www.jetbrains.com/help/pycharm/

16
init_testcase.py

@ -1,10 +1,10 @@
# This is a sample Python script. # This is a sample Python script.
import sys# import os
# import jsonpickle # pip install jsonpickle # import jsonpickle # pip install jsonpickle
import yaml # pip install pyyaml import yaml # pip install pyyaml
import basic.program as program import basic.program as program
import utils.tdata_tool import utils.tdata_tool
from basic.componentHandling import ComponentManager import basic.componentHandling
import basic.message as message import basic.message as message
# Press Umschalt+F10 to execute it or replace it with your code. # Press Umschalt+F10 to execute it or replace it with your code.
# Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings. # Press Double Shift to search everywhere for classes, files, tool windows, actions, and settings.
@ -12,12 +12,12 @@ import basic.message as message
PROGRAM_NAME = "init_testcase" PROGRAM_NAME = "init_testcase"
def start(x): def startPyJob(job):
cm = ComponentManager() cm = basic.componentHandling.ComponentManager.getInstance("init")
print("cm "+str(cm)) print("cm "+str(cm))
cm.initComponents() cm.initComponents()
comps = cm.getComponents(PROGRAM_NAME) comps = cm.getComponents(PROGRAM_NAME)
x.m.setMsg("# Components initialized with these relevant components " + str(comps)) job.m.setMsg("# Components initialized with these relevant components " + str(comps))
testdata = utils.tdata_tool.getTestdata() testdata = utils.tdata_tool.getTestdata()
for c in comps: for c in comps:
comp = cm.getComponent(c) comp = cm.getComponent(c)
@ -26,7 +26,7 @@ def start(x):
comp.load_TData("testcase", testdata) comp.load_TData("testcase", testdata)
comp.read_TData("testcase") comp.read_TData("testcase")
comp.m.logInfo("------- "+comp.name+" ----------------------------------------") comp.m.logInfo("------- "+comp.name+" ----------------------------------------")
x.m.merge(comp.m) job.m.merge(comp.m)
print(str(comp)) print(str(comp))
comp.conf["function"][PROGRAM_NAME] = comp.m.topmessage comp.conf["function"][PROGRAM_NAME] = comp.m.topmessage
@ -34,8 +34,6 @@ def start(x):
if __name__ == '__main__': if __name__ == '__main__':
print(PROGRAM_NAME) print(PROGRAM_NAME)
x = program.Job(PROGRAM_NAME) x = program.Job(PROGRAM_NAME)
#m = message.Message(3)
#m.closeMessage()
x.startJob() x.startJob()
x.m.logInfo("hier eine LogInfo") x.m.logInfo("hier eine LogInfo")
x.m.logDebug("hier eine DbugMeldung") x.m.logDebug("hier eine DbugMeldung")
@ -43,6 +41,6 @@ if __name__ == '__main__':
if x.m.isRc("fatal"): if x.m.isRc("fatal"):
x.stopJob() x.stopJob()
exit(x.m.rc * (-1) + 3) exit(x.m.rc * (-1) + 3)
start(x) startPyJob(x)
x.stopJob() x.stopJob()
# See PyCharm help at https://www.jetbrains.com/help/pycharm/ # See PyCharm help at https://www.jetbrains.com/help/pycharm/

73
utils/file_tool.py

@ -4,12 +4,18 @@
""" """
import codecs import codecs
import json
import os import os
import os.path import os.path
import re import re
import yaml
import basic.message import basic.message
import basic.program import basic.program
from pprint import pp from pprint import pp
import utils.tdata_tool
def getDump(obj): def getDump(obj):
result="" result=""
print (str(type(obj))) print (str(type(obj)))
@ -84,11 +90,14 @@ def getTree(msg, pfad):
tree["_files_"] = files tree["_files_"] = files
return tree return tree
def mkPaths(msg, pfad): def mkPaths(path, msg):
job = basic.program.Job.getInstance() job = basic.program.Job.getInstance()
verify = int(job.getDebugLevel("file_tool")) verify = int(job.getDebugLevel("file_tool"))
modus = job.conf.confs["paths"]["mode"] modus = job.conf.confs["paths"]["mode"]
os.makedirs(pfad, exist_ok=True) dirname = os.path.dirname(path)
if os.path.exists(dirname):
return
os.makedirs(dirname, exist_ok=True)
def getFileEncoding(msg, path): def getFileEncoding(msg, path):
print("--- getFileEncoding "+path) print("--- getFileEncoding "+path)
@ -106,9 +115,9 @@ def getFileEncoding(msg, path):
else: else:
print('opening the file with encoding: %s ' % e) print('opening the file with encoding: %s ' % e)
return e return e
return detectFileEncode(msg, path) return detectFileEncode(path, msg)
def detectFileEncode(msg, path): # return "" def detectFileEncode(path, msg): # return ""
job = basic.program.Job.getInstance() job = basic.program.Job.getInstance()
verify = int(job.getDebugLevel("file_tool")) verify = int(job.getDebugLevel("file_tool"))
print(path) print(path)
@ -128,18 +137,66 @@ def detectFileEncode(msg, path): # return ""
return 'iso-8859-1' return 'iso-8859-1'
return 'utf-8' return 'utf-8'
def readFileLines(msg, path): def readFileLines(path, msg):
lines = readFileText(path, msg)
if isinstance(lines, (str)):
return lines.splitlines()
return []
def readFileText(path, msg):
job = basic.program.Job.getInstance() job = basic.program.Job.getInstance()
verify = int(job.getDebugLevel("file_tool")) verify = int(job.getDebugLevel("file_tool"))
enc = detectFileEncode(msg, path) if not os.path.exists(path):
return ""
enc = detectFileEncode(path, msg)
with open(path, 'r', encoding=enc) as file: with open(path, 'r', encoding=enc) as file:
lines = file.read().splitlines() text = file.read()
file.close() file.close()
return lines return text
def readFileDict(path, msg):
"""
reads and gets general a dict from any kind of filetyp
:param path: with extension of filetype
:param msg: optionally
:return:
"""
# 20220329 generalize
job = basic.program.Job.getInstance()
verify = int(job.getDebugLevel("file_tool"))
doc = {}
if not os.path.exists(path):
return doc
enc = detectFileEncode(path, msg)
if "yml" in path[-5:]:
with open(path, 'r', encoding=enc) as file:
doc = yaml.full_load(file)
file.close()
elif "json" in path[-5:]:
with open(path, 'r', encoding=enc) as file:
doc = json.load(file)
file.close()
elif "csv" in path[-5:]:
doc = utils.tdata_tool.getCsvSpec(msg, path, "conf")
return doc
def writeFileText(msg, path, text, enc="utf-8"): def writeFileText(msg, path, text, enc="utf-8"):
job = basic.program.Job.getInstance() job = basic.program.Job.getInstance()
verify = int(job.getDebugLevel("file_tool")) verify = int(job.getDebugLevel("file_tool"))
mkPaths(path, msg)
with open(path, 'w', encoding=enc) as file: with open(path, 'w', encoding=enc) as file:
file.write(text) file.write(text)
file.close() file.close()
def writeFileDict(msg, path, dict, enc="utf-8"):
job = basic.program.Job.getInstance()
mkPaths(path, msg)
if "yml" in path[-5:]:
with open(path, 'r', encoding=enc) as file:
doc = yaml.dump(dict, file)
file.close()
elif "json" in path[-5:]:
with open(path, 'w', encoding=enc) as file:
doc = json.dumps(file, indent=4)
file.write(doc)
file.close()

14
utils/path_tool.py

@ -28,9 +28,11 @@ def getKeyValue(key, comp=None):
elif 'comp.' in key: elif 'comp.' in key:
if comp is None: if comp is None:
raise Exception("Component is missing for "+key) raise Exception("Component is missing for "+key)
if not utils.config_tool.hasAttr(comp, key[5:]): if utils.config_tool.hasAttr(comp.conf, key[5:]):
pass return utils.config_tool.gasAttr(comp.conf, key[5:])
return utils.config_tool.getAttr(comp, key[5:]) if utils.config_tool.hasAttr(comp, key[5:]):
return utils.config_tool.gasAttr(comp, key[5:])
return ""
elif 'env.' in key: elif 'env.' in key:
#if key[4:] #if key[4:]
pass pass
@ -48,12 +50,12 @@ def composePath(pathname, comp):
job.debug(verify, "composePath " + pathname + " zu " + str(pt) + "mit ") job.debug(verify, "composePath " + pathname + " zu " + str(pt) + "mit ")
job.debug(verify, str(pt.pattern)) job.debug(verify, str(pt.pattern))
if pt.pattern[pathname]: if pt.pattern[pathname]:
return composePatttern(pt.pattern[pathname], comp) return composePattern(pt.pattern[pathname], comp)
else: else:
job.debug(verify, "in Pattern nicht vorhanden: " + pathname) job.debug(verify, "in Pattern nicht vorhanden: " + pathname)
def composePatttern(pattern, comp): def composePattern(pattern, comp):
job = basic.program.Job.getInstance() job = basic.program.Job.getInstance()
verify = job.getDebugLevel("path_tool") verify = job.getDebugLevel("path_tool")
job.debug(verify, "composePattern " + pattern) job.debug(verify, "composePattern " + pattern)
@ -69,7 +71,7 @@ def composePatttern(pattern, comp):
while ("{" in pattern): while ("{" in pattern):
max = max-1 max = max-1
job.debug(verify, str(max) + ": " + pattern + ": " + pat + ": " + pit) job.debug(verify, str(max) + ": " + pattern + ": " + pat + ": " + pit)
pattern = composePatttern(pattern, comp) pattern = composePattern(pattern, comp)
job.debug(verify, str(max) + ": " + pattern + ": " + pat + ": " + pit) job.debug(verify, str(max) + ": " + pattern + ": " + pat + ": " + pit)
if (max < 3) : if (max < 3) :
break break

25
utils/report_tool.py

@ -102,7 +102,8 @@ class Report():
elif len(testcase) > 1: elif len(testcase) > 1:
html = "<title>"+REP_TITLE+" "+REP_TC+" "+testcase+"</title></head><body><h1>"+REP_TITLE+" "+REP_TC+" "+testcase+"</h1>" html = "<title>"+REP_TITLE+" "+REP_TC+" "+testcase+"</title></head><body><h1>"+REP_TITLE+" "+REP_TC+" "+testcase+"</h1>"
else: else:
html = "<title>"+REP_TITLE+" "+REP_TS+" "+getattr(job.par, "testsuite")+"</title></head><body><h1>"+REP_TITLE+" "+REP_TS+" "+getattr(job.par, "testsuite")+"</h1>" html = "<title>"+REP_TITLE+" "+REP_TS+" "+getattr(job.par, "usecase")+"</title>"
html += "</head><body><h1>"+REP_TITLE+" "+REP_TS+" "+getattr(job.par, "usecase")+"</h1>"
if hasattr(job.par, B.PAR_DESCRIPT): if hasattr(job.par, B.PAR_DESCRIPT):
html += "<p>"+getattr(job.par, B.PAR_DESCRIPT)+"</p>" html += "<p>"+getattr(job.par, B.PAR_DESCRIPT)+"</p>"
return html return html
@ -117,12 +118,18 @@ class Report():
:return: :return:
""" """
cssClass = "result0" cssClass = "result0"
if len(match) > 0: if len(match) > 0 and len(artefact) > 0:
if match in self.report[testcase][component][artefact]: if match in self.report[testcase][component][artefact]:
if "css" in self.report[testcase][component][artefact][match]: if "css" in self.report[testcase][component][artefact][match]:
if cssClass < self.report[testcase][component][artefact][match]["css"]: if cssClass < self.report[testcase][component][artefact][match]["css"]:
cssClass = self.report[testcase][component][artefact][match]["css"] cssClass = self.report[testcase][component][artefact][match]["css"]
return cssClass return cssClass
elif len(match) > 0:
for a in self.report[testcase][component]:
val = self.getCssClass(testcase, component, a, match)
if cssClass < val:
cssClass = val
return cssClass
elif len(artefact) > 0: elif len(artefact) > 0:
for match in self.report[testcase][component][artefact]: for match in self.report[testcase][component][artefact]:
if "css" in self.report[testcase][component][artefact][match]: if "css" in self.report[testcase][component][artefact][match]:
@ -197,16 +204,16 @@ class Report():
for side in ["A", "B"]: for side in ["A", "B"]:
path = self.report[testcase][component][artefact][matchtype]["path"+side] path = self.report[testcase][component][artefact][matchtype]["path"+side]
href = path.replace(job.conf.confs[B.SUBJECT_PATH][B.ATTR_PATH_ARCHIV], os.path.join("..", "..")) href = path.replace(job.conf.confs[B.SUBJECT_PATH][B.ATTR_PATH_ARCHIV], os.path.join("..", ".."))
html += M.MATCH[M.MATCH[M.MATCH_POSTCOND][side]]["long"]+" " html += M.MATCH[M.MATCH[matchtype][side]]["long"]+" "
html += "<a href=\""+href+"\">"+path+"<a>\n" html += "<a href=\""+href+"\">"+path+"<a>\n"
if side == "A": html += "<br>" if side == "A": html += "<br>"
html += "</p>" html += "</p>"
return html return html
def getFilepath(self, testcase, component, artefact, matchtype): def getFilepath(self, testcase, component, artefact, matchtype):
cm = basic.componentHandling.ComponentManager() cm = basic.componentHandling.ComponentManager.getInstance("init")
comp = cm.getComponent(component) comp = cm.getComponent(component)
path = os.path.join(utils.path_tool.composePatttern("{tcresult}", comp), artefact+"_"+M.MATCH[matchtype]["filename"]+".html") path = os.path.join(utils.path_tool.composePattern("{tcresult}", comp), artefact+"_"+M.MATCH[matchtype]["filename"]+".html")
return path return path
def getComparisonBlock(self, testcase, component, artefact, matchtype): def getComparisonBlock(self, testcase, component, artefact, matchtype):
@ -233,6 +240,8 @@ class Report():
def extractTestcase(self, testcase, html): def extractTestcase(self, testcase, html):
job = basic.program.Job.getInstance() job = basic.program.Job.getInstance()
verify = int(job.getDebugLevel("report_tool")) - 1 verify = int(job.getDebugLevel("report_tool")) - 1
if not testcase in self.report:
self.report = {}
overview = re.findall("<tr class.+tc-overview.*</tr>", html) overview = re.findall("<tr class.+tc-overview.*</tr>", html)
if len(overview) == 1: if len(overview) == 1:
self.report[testcase]["overview"] = overview[0] self.report[testcase]["overview"] = overview[0]
@ -245,16 +254,16 @@ class Report():
def reportTestsuite(self): def reportTestsuite(self):
job = basic.program.Job.getInstance() job = basic.program.Job.getInstance()
verify = int(job.getDebugLevel("report_tool")) - 1 verify = int(job.getDebugLevel("report_tool")) - 1
testcases = getattr(job.par, "testcases") testinstances = getattr(job.par, "testinstances")
html = self.getHeader() html = self.getHeader()
html += self.getTitle() html += self.getTitle()
i = 0 i = 0
for testcase in testcases: for testcase in testinstances:
if i == 0: html += self.getOverviewHead(testcase) if i == 0: html += self.getOverviewHead(testcase)
html += self.report[testcase]["overview"] html += self.report[testcase]["overview"]
i += 1 i += 1
html += "</table>" html += "</table>"
for testcase in testcases: for testcase in testinstances:
html += self.report[testcase]["block"] html += self.report[testcase]["block"]
html += "</body></html>" html += "</body></html>"
return html return html

57
utils/zip_tool.py

@ -1,23 +1,39 @@
import zipfile import zipfile
import tarfile import tarfile
import os import os
import basic.program
ZIEL = '/home/ulrich/tmp'
QUELLE = '/home/ulrich/1_privat'
FOLDER = '64-UMKER'
def untarFolder(target, targetFile):
def untarFolder(): tar_file = tarfile.open(os.path.join(target, targetFile), 'r:gz')
tar_file = tarfile.open(os.path.join(ZIEL, 'tartemp.tar.gz'), 'r:gz') tar_file.extractall(path=os.path.join(target, 'tarliste'))
tar_file.extractall(path=os.path.join(ZIEL, 'tarliste'))
tar_file.close() tar_file.close()
pass pass
def tarFolder(): def openNewTarFile(target, targetFile):
with tarfile.open(os.path.join(ZIEL, 'tartemp.tar.gz'), 'w:gz') as tar_file: job = basic.program.Job.getInstance()
for folderName, subfolders, filenames in os.walk(os.path.join(QUELLE, FOLDER)): tarfilename = os.path.join(target, targetFile)
if os.path.exists(tarfilename):
os.remove(tarfilename)
job.m.logInfo("Archiv angelegt "+tarfilename)
return tarfile.open(tarfilename, 'w:gz')
def appendFolderIntoTarFile(source, sourceFolder, tarFile):
workFolder = os.path.join(source, sourceFolder)
for folderName, subfolders, filenames in os.walk(workFolder):
for filename in filenames:
folderShort = folderName[len(source)+1:]
# create complete filepath of file in directory
filePath = os.path.join(folderName, filename)
# Add file to zip
tarFile.add(filePath, os.path.join(folderShort, filename))
def tarFolder(source, sourceFolder, target, targetFile):
with tarfile.open(os.path.join(target, targetFile), 'w:gz') as tar_file:
for folderName, subfolders, filenames in os.walk(os.path.join(source, sourceFolder)):
for filename in filenames: for filename in filenames:
folderShort = folderName.replace(QUELLE + '/', '') folderShort = folderName.replace(source + '/', '')
# create complete filepath of file in directory # create complete filepath of file in directory
filePath = os.path.join(folderName, filename) filePath = os.path.join(folderName, filename)
# Add file to zip # Add file to zip
@ -25,18 +41,18 @@ def tarFolder():
tar_file.close() tar_file.close()
def unzipFolder(): def unzipFolder(target, targetFile):
zip_file = zipfile.ZipFile(os.path.join(ZIEL, 'temp.zip'), 'r') zip_file = zipfile.ZipFile(os.path.join(target, targetFile), 'r')
zip_file.extractall(path=os.path.join(ZIEL, 'liste')) zip_file.extractall(path=os.path.join(target, 'liste'))
zip_file.close() zip_file.close()
pass pass
def zipFolder(): def zipFolder(source, sourceFolder, target, targetFile):
with zipfile.ZipFile(os.path.join(ZIEL, 'temp.zip'), 'w') as zip_file: with zipfile.ZipFile(os.path.join(target, targetFile), 'w') as zip_file:
# Iterate over all the files in directory # Iterate over all the files in directory
for folderName, subfolders, filenames in os.walk(os.path.join(QUELLE, FOLDER)): for folderName, subfolders, filenames in os.walk(os.path.join(source, sourceFolder)):
for filename in filenames: for filename in filenames:
folderShort = folderName.replace(QUELLE+'/', '') folderShort = folderName.replace(source+'/', '')
# create complete filepath of file in directory # create complete filepath of file in directory
filePath = os.path.join(folderName, filename) filePath = os.path.join(folderName, filename)
# Add file to zip # Add file to zip
@ -44,8 +60,3 @@ def zipFolder():
zip_file.close() zip_file.close()
return "" return ""
if __name__ == '__main__':
zipFolder()
unzipFolder()
tarFolder()
untarFolder()

Loading…
Cancel
Save