forked from cms-kr/hep-tools
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmakeFileList
executable file
·86 lines (73 loc) · 2.19 KB
/
makeFileList
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#!/usr/bin/env python
import sys, os
argv = sys.argv[:]
if "-o" not in argv:
print "No -o FILENAME given. Set default samples_*.txt"
argv.extend(["-o", "samples.txt"])
if argv.index("-o") >= len(argv)-1:
print "Put filename after -o option"
exit()
fout = argv.pop(argv.index("-o")+1)
argv.remove("-o")
import subprocess
if subprocess.call("type xrd", shell=True,
stdout=subprocess.PIPE, stderr=subprocess.PIPE) != 0:
print "Error: Need xrd command"
sys.exit()
hostname = os.environ["HOSTNAME"]
cmd = ""
xrdbase = ''
xrdhost = ''
if "sdfarm" in hostname:
xrdhost = 'cms-xrdr.sdfarm.kr'
xrdbase = '/xrd'
elif "uos" in hostname:
xrdhost = 'uosaf0007.sscc.uos.ac.kr'
xrdbase = '/cms'
else:
print "Hostname", hostname, "not supported"
sys.exit()
cmd = "xrd %s ls " % (xrdhost)
dsetIn = []
if len(argv) >= 2:
dsetIn = [xrdbase+l for l in argv[1:]]
else:
while True:
l = raw_input("samples: ").strip()
if len(l) == 0: break
if not l.startswith('/'): continue
dsetIn.append(xrdbase+l)
ds = []
for l in dsetIn:
fl = []
size = 0
dd = set([x.strip().split()[-1] for x in subprocess.check_output(cmd + l, shell=True).strip().split('\n') if len(x) > 0])
for d in dd:
ff = {}
for f in subprocess.check_output(cmd + d, shell=True).strip().split('\n'):
f = f.strip().split()
fname = f[-1]
if not fname.endswith('.root'): continue
if fname.startswith(xrdbase): fname = fname[len(xrdbase):]
ff[fname] = f[1]
for fname in ff:
size += int(ff[fname])
fl.append(fname)
fl.sort()
path = os.path.dirname(l)
if path.startswith(xrdbase): path = path[len(xrdbase):]
ds.append({'path':path, 'files':fl, 'size':size})
if fout.endswith(".json"):
import json
f = open(fout, "w")
print>>f, json.dumps(ds)
else:
suffix = fout.split(".")[-1]
prefix = ".".join(fout.split(".")[:-1])
for i, d in enumerate(ds):
fout = open("%s_%d.%s" % (prefix, i, suffix), "w")
print>>fout, ("# size = %d" % d['size'])
for f in d['files']:
print>>fout, f
fout.close()
#print ds