21 error =
"Usage: splitter fromDir" 23 sourceDir = sys.argv[1] +
'/' 25 fileList =
ls(sourceDir,
".txt")
30 for fileName
in fileList:
32 if runNumber
not in fileObjList:
33 fileObjList[runNumber] =
FileObj()
34 fileObjList[runNumber].run = runNumber
35 fileObjList[runNumber].fileNames.append(fileName)
36 aCommand =
'ls -l '+ sourceDir + fileName
37 output = commands.getstatusoutput( aCommand )
38 fileObjList[runNumber].size +=
int(output[1].
split(
' ')[4])
39 totalSize +=
int(output[1].
split(
' ')[4])
41 sortedKeys = sorted(fileObjList.keys())
47 for run
in sortedKeys:
48 dirSize += fileObjList[run].size
49 tmpList.append(fileObjList[run])
50 if dirSize > totalSize/split
or run == sortedKeys[len(sortedKeys)-1]:
51 newDir = sourceDir +
"Run" +
str(tmpList[0].run) +
"_" +
str(tmpList[len(tmpList)-1].run) +
"/" 52 aCommand =
'mkdir '+ newDir
53 output = commands.getstatusoutput( aCommand )
54 print str(100.*dirSize/totalSize) +
"% " +
"Run" +
str(tmpList[0].run) +
"_" +
str(tmpList[len(tmpList)-1].run)
57 cp(sourceDir,newDir,runs.fileNames)
73 if not os.path.isdir(destDir):
74 error =
"WARNING: destination directory doesn't exist! Creating it..." 77 copiedFiles =
cp(sourceDir,destDir,fileList)
79 if len(copiedFiles) != len(fileList):
80 error =
"ERROR: I couldn't copy all files from castor" 83 for fileName
in fileList:
84 fullFileName = destDir + fileName
86 with open(fullFileName,
'r') as file: 88 if line.find(
"Runnumber") != -1:
89 tmpRun =
int(line.split(
' ')[1])
90 if runNumber != -1
and tmpRun != runNumber:
91 error =
"This file (" + fileName +
") contains more than 1 run number! I don't know how to deal with it!" 93 runNumber =
int(line.split(
' ')[1])
95 newFileName = fileName.replace(
"None",
str(runNumber))
96 if fileName != newFileName:
97 aCmd =
"mv " + destDir + fileName +
" " + destDir + newFileName
99 output = commands.getstatusoutput(aCmd)
103 print "WARNING couldn't find keyword None in file " + fileName
def getRunNumberFromFileName(fileName)