view xena_backup.py @ 39:066ae9df2d27

labeling descriptions edit
author jingchunzhu <jingchunzhu@gmail.com>
date Mon, 27 Jul 2015 00:46:53 -0700
parents 8bb037f88ed2
children
line wrap: on
line source

#!/usr/bin/env python

"""
  xena_backup.py: delete a dataset from Xena

  Back up the Xena data to a user-specified external directory.
"""

import argparse
import os
import shutil
import subprocess
import sys
import traceback
import xena_utils as xena

def writeException(outFp, msg = None):
    exc_type, exc_value, exc_traceback = sys.exc_info()
    lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
    allLines = ''.join('!! ' + line for line in lines)
    if msg is None:
        outFp.write("Unsuccessful: error %s\n" % allLines)
    else:
        outFp.write("%s\n%s" % (msg, allLines))
    
    

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("pathname", type=str)
    parser.add_argument("outfile", type=str)
    args = parser.parse_args()

    outFp = open(args.outfile, "w")
    xenaFileDir = xena.fileDir()

    if not os.path.exists(args.pathname):
        try:
            os.mkdir(args.pathname)
        except:
            writeException(outFp, 
                           msg="Error: cannot create %s" % args.pathname)
            outFp.close()
            sys.exit(-1)
    for thisFile in os.listdir(xenaFileDir):
        try:
            shutil.copy(xenaFileDir + "/" + thisFile, args.pathname)
        except:
            writeException(outFp,
                           msg="Error: cannot back up files from %s to %s" \
                               % (xena.fileDir(), args.pathname))
            outFp.close()
            sys.exit(-1)
    outFp.write("Backup complete\n")
    outFp.close()
    sys.exit(0)


if __name__ == "__main__":
    main()