2018-11-28 19:45:52 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def parseTSV(filename,*args):
|
|
|
|
f = open(filename)
|
|
|
|
|
|
|
|
result = []
|
|
|
|
for l in [l for l in f if (not l.startswith("#")) and (not l.strip()=="")]:
|
|
|
|
|
|
|
|
l = l.replace("\n","").split("#")[0]
|
|
|
|
data = list(filter(None,l.split("\t"))) # Multiple tabs are okay, we don't accept empty fields unless trailing
|
|
|
|
entry = [] * len(args)
|
|
|
|
for i in range(len(args)):
|
|
|
|
if args[i]=="list":
|
|
|
|
try:
|
|
|
|
entry.append(data[i].split("␟"))
|
|
|
|
except:
|
|
|
|
entry.append([])
|
|
|
|
elif args[i]=="string":
|
|
|
|
try:
|
|
|
|
entry.append(data[i])
|
|
|
|
except:
|
|
|
|
entry.append("")
|
|
|
|
elif args[i]=="int":
|
|
|
|
try:
|
|
|
|
entry.append(int(data[i]))
|
|
|
|
except:
|
|
|
|
entry.append(0)
|
|
|
|
elif args[i]=="bool":
|
|
|
|
try:
|
|
|
|
entry.append((data[i].lower() in ["true","yes","1","y"]))
|
|
|
|
except:
|
|
|
|
entry.append(False)
|
|
|
|
|
|
|
|
result.append(entry)
|
|
|
|
|
|
|
|
f.close()
|
|
|
|
return result
|
|
|
|
|
|
|
|
def parseAllTSV(path,*args):
|
|
|
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
result = []
|
|
|
|
for f in os.listdir(path + "/"):
|
|
|
|
|
|
|
|
if (".tsv" in f):
|
|
|
|
|
|
|
|
result += parseTSV(path + "/" + f,*args)
|
|
|
|
|
|
|
|
return result
|
|
|
|
|
2018-11-30 18:01:32 +03:00
|
|
|
def createTSV(filename):
|
|
|
|
import os
|
|
|
|
|
|
|
|
if not os.path.exists(filename):
|
|
|
|
open(filename,"w").close()
|
|
|
|
|