#!/usr/bin/python import sys, os, getopt def usage(): print '' print 'compare_two_list_of_dcache_files' print '' print 'compares a file with dcache url\'s (base_file) to file with filenames (comparison_file)' print 'writes out new file with dcache url\'s which are not in both files (output_file)' print '' print 'required parameters:' print '--tier (-t) : hit, digi, dst to use the default file names' print '' print 'optional parameters:' print '--help (-h) : help' print '--debug (-d) : debug statements' print '' print '--base_file_name (-b) : base_file with dcache url\'s, default: _catalog.cpy' print '--comparison_file_name (-c) : comparison_file with file_names, default: _resilient.cpy' print '--output_file_name (-o) : output_file with dcache url\'s not in both files, default: _to_be_staged.cpy' print '' def main(argv) : # default tier = '' base_file_name = '' comparison_file_name = '' output_file_name = '' try: opts, args = getopt.getopt(argv, "hdt:b:c:o:", ["help", "debug", "tier=", "base_file_name=", "comparison_file_name=", "output_file_name="]) except getopt.GetoptError: usage() sys.exit(2) # check command line parameter for opt, arg in opts : if opt in ("-h","--help") : usage() sys.exit() elif opt in ("-d","--debug") : global _debug _debug = 1 elif opt in ("-t","--tier") : tier = arg elif opt in ("-b","--base_file_name") : base_file_name = arg elif opt in ("-c","--comparison_file_name") : comparison_file_name = arg elif opt in ("-o","--output_file_name") : output_file_name = arg if base_file_name == '': if tier == '' : usage() sys.exit() else : base_file_name = tier+'_catalog.cpy' if comparison_file_name == '': if tier == '' : usage() sys.exit() else : comparison_file_name = tier+'_resilient.cpy' if output_file_name == '': if tier == '' : usage() sys.exit() else : output_file_name = tier+'_to_be_staged.cpy' ## read in base file base_files = [] try: base = open(base_file_name) except IOError: print 'Could not open file: ',base_file_name sys.exit() base_line = base.readline() counter = 0 while base_line : base_line = base_line.strip() base_files.append(base_line) counter += 1 base_line = base.readline() print 'Read in ',counter,' files from ',base_file_name # read in comparison file comparison_files = [] try: comparison = open(comparison_file_name) except IOError: print 'Could not open file: ',comparison_file_name sys.exit() comparison_line = comparison.readline() counter = 0 while comparison_line : comparison_line = comparison_line.strip() comparison_files.append(comparison_line) counter += 1 comparison_line = comparison.readline() print 'Read in ',counter,' files from ',comparison_file_name # strip base list of path base_stripped_files = [] for base_file in base_files : base_stripped_files.append(os.path.split(base_file)[1]) # output file of url's which still have to be staged output = open(output_file_name,'w') # check both lists for same entries counter_only_in_base = 0 counter_in_both = 0 for base_stripped_file in base_stripped_files: if base_stripped_file in comparison_files : index = base_stripped_files.index(base_stripped_file) counter_in_both += 1 else : index = base_stripped_files.index(base_stripped_file) output.write(base_files[index]) output.write('\n') counter_only_in_base += 1 print 'In both files: ',counter_in_both print 'Only in base file ',counter_only_in_base if __name__ == '__main__' : main(sys.argv[1:])