00001 #!/usr/bin/python 00002 # 00003 # Software License Agreement (BSD License) 00004 # 00005 # Copyright (c) 2008, Willow Garage, Inc. 00006 # All rights reserved. 00007 # 00008 # Redistribution and use in source and binary forms, with or without 00009 # modification, are permitted provided that the following conditions 00010 # are met: 00011 # 00012 # * Redistributions of source code must retain the above copyright 00013 # notice, this list of conditions and the following disclaimer. 00014 # * Redistributions in binary form must reproduce the above 00015 # copyright notice, this list of conditions and the following 00016 # disclaimer in the documentation and/or other materials provided 00017 # with the distribution. 00018 # * Neither the name of the Willow Garage nor the names of its 00019 # contributors may be used to endorse or promote products derived 00020 # from this software without specific prior written permission. 00021 # 00022 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 00023 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 00024 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 00025 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 00026 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 00027 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 00028 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 00029 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00030 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00031 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 00032 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 00033 # POSSIBILITY OF SUCH DAMAGE. 00034 00035 # Author: Kevin Watts 00036 00037 00038 # Make any csv into sparse csv 00039 00040 00041 PKG = 'diagnostic_analysis' 00042 import roslib 00043 roslib.load_manifest(PKG) 00044 00045 import csv, os, sys 00046 from optparse import OptionParser 00047 00048 from diagnostic_analysis.sparse import make_sparse_skip, make_sparse_length 00049 00050 if __name__=='__main__': 00051 # Allow user to set output directory 00052 parser = OptionParser() 00053 parser.add_option("-l", "--length", dest="length", 00054 help="Set length of output CSV", metavar="LEN", 00055 default=None, action="store") 00056 parser.add_option("-s", "--skip", dest="skip", 00057 help="Skip every nth row. If length set, will ignore this value.", 00058 metavar="SKIP", default=10, action="store") 00059 parser.add_option("-m", "--max", dest="max", 00060 help="Make largest possible file for Open Office (65k lines). If selected, other options ignored.", 00061 metavar="MAX", default=False, action="store_true") 00062 00063 options, args = parser.parse_args() 00064 00065 # Get CSV file 00066 if len(args) < 1: 00067 print 'No CSV file given.' 00068 sys.exit(0) 00069 00070 csv_file = args[0] 00071 00072 if not csv_file.endswith('.csv'): 00073 print 'File %s is not a CSV file. Aborting.' % csv_file 00074 sys.exit(0) 00075 00076 if options.max: 00077 output_file = make_sparse_length(csv_file, 65000) 00078 elif options.length is None: 00079 output_file = make_sparse_skip(csv_file, options.skip) 00080 else: 00081 output_file = make_sparse_length(csv_file, int(options.length)) 00082 00083 print 'Created sparse CSV %s' % output_file