def set_new_gender_list (self, file_path) : """ a new gender list file has been selected; load that list and send an appropriate update to the UI """ # if we have a valid file path with a non-directory at the end of it if ( (file_path is not None) and (file_path != '') and (os.path.exists(file_path)) and (not os.path.isdir(file_path)) ) : # open the file and set our internal gender data accordingly genderFile = open(file_path, 'r') self.loaded_list_path = file_path self.gender_defs, self.gender_orders = swap_util.parse_genderlist_file(genderFile.readlines()) # let the view know that the gender information changed self.gui_for_updates.recieveUpdate ( genderListFilePath=self.loaded_list_path, genderDefinitions=self.gender_defs, genderOrdering=self.gender_orders,) else : print ("Unable to open file path: " + str(file_path))
def swap ( ) : """swap in specific genders for a set of documents given information in the form of commandline options: 1. load a gender list document that will define the genders of the characters for this run 2. load the files in the input directory and process genders in any sheets that have file types we know how to process 3. save the resulting gendered documents to the output directory """ # make sure we aren't going to overwrite our input files if options.outDirectory == options.inputDirectory : print ("Input and output directories cannot be the same. " + "Please select a different output directory to avoid " + "destroying your original sheets.") return 1 # make sure we have a gender list to work with if options.genderList is None : print ("Unable to process files without a gender list document " + "defining the character's genders.") return 1 print ("Opening and parsing gender list: " + options.genderList) genderListFile = open(options.genderList, "r") genderDefinitions, genderOrdering = swap_util.parse_genderlist_file(genderListFile.readlines()) genderListFile.close() # create the output directory if needed if not os.path.exists(options.outDirectory): print "Making output directory: " + options.outDirectory os.makedirs(options.outDirectory) # get a list of files in the input directory print ("Examining all input character sheets in: " + options.inputDirectory) possibleSheets = os.listdir(options.inputDirectory) # for each file in the input directory... for possibleSheet in possibleSheets : processThisSheet = False # check to see if it looks like the kind of sheet we're expecting print ("----------------------------------") print ("Examining file: " + possibleSheet) number = possibleSheet.split('.')[0] _, fileType = os.path.splitext(possibleSheet) # if this really is a number and it represents a character that's # in the gender definitions we were given, the name looks good so far if number.isdigit() and int(number) in genderDefinitions : processThisSheet = True # double check that this is a type of file we can process processThisSheet = (processThisSheet and (fileType == ".txt" or fileType == ".rtf")) #print "fileType: " + fileType if processThisSheet : #process_one_file (file_path, output_path, gender_defs, process_file_names=False) swap_util.process_one_file(os.path.join(options.inputDirectory, possibleSheet), options.outDirectory, genderDefinitions, genderOrdering, process_file_names=options.processName) else : print ("File " + possibleSheet + " does not match character sheet name patterns. " + "This file will not be processed.") return 0