Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # coding: latin-1
- # Python 3.4.1
- import os,random,time
- # få en lista av filer i mappen
- # ex:
- # classes/132A.txt
- # classes/132B.txt
- # classes/132C.txt
- # varje fil innehåller en lista med
- # klasskamrater med ett namn per rad
- def selectclass(folder):
- if not os.path.isdir(folder):
- print("The folder '%s' does not exist!" % folder)
- return None
- dirfiles = os.listdir(folder)
- files = {}
- # fyll dict med filnamn:klassnamn
- for index in range(len(dirfiles)):
- filename = dirfiles[index]
- basename = os.path.basename(filename)
- if os.path.isfile(os.path.join(folder,filename)) and basename[-4:] == '.txt':
- files[basename[:-4]] = basename
- if len(files) < 1:
- print("No valid files in '%s'" % folder)
- return None
- # Fråga om vilken klass
- print("Please select one of the following:")
- for key in files:
- print("- %s" % key)
- # gör dics'ens värden till lista och tar ett slumpmässigt värde
- randomfile = list(files.keys())[random.randrange(len(files))]
- print("For example, type '%s'\n(without the apostrophes)\nOr type 'cancel' to change folder" % randomfile)
- userinput = ""
- while True:
- userinput = input("> ")
- if userinput in files:
- break
- else:
- print("'%s' does not exist among the list!" % userinput)
- if userinput.lower() == "cancel":
- return None
- print("'%s' selected!" % userinput)
- return files[userinput],userinput
- def selectreadfolder():
- print("Please enter the folder containing the class lists")
- userinput = ""
- while True:
- userinput = input("> ")
- if os.path.isdir(userinput):
- print("Folder '%s' selected!" % userinput)
- break
- else:
- print("'%s' is not a valid folder!" % userinput)
- return userinput
- def getclassmates(path):
- try:
- fileObj = open(path,"r")
- except FileNotFoundError:
- print("Unable to open file at '%s'!" % path)
- return None
- alldata = fileObj.read()
- return alldata.split("\n")
- def randomise(classmates):
- randomclass = classmates.copy()
- for index in range(len(classmates),0,-1):
- if randomclass[index-1] == '':
- del randomclass[index-1]
- random.shuffle(randomclass)
- return randomclass
- def selectwritefolder():
- print("Please enter the folder where you wish to save the new text files")
- userinput = ""
- while True:
- userinput = input("> ")
- if os.path.isdir(userinput):
- return userinput
- try:
- os.mkdir(userinput)
- return userinput
- except FileExistsError:
- return userinput
- except FileNotFoundError:
- print("Unable to create folder at '%s', destination not found!" % userinput)
- def getfilename(folder,name,overflow,ext=".txt"):
- name = name + " (%s)" % ("000"[:-len(str(overflow))] + str(overflow))
- return os.path.join(folder,name+ext)
- def save(classname,classlist,folder):
- # skapa namn på filen, använd datum i filens namn
- filename = "%s [%s]" % (classname,time.strftime("%A, %d %b %Y",time.localtime()))
- # hitta ett unikt namn
- overflow = 0
- while os.path.exists(getfilename(folder,filename,overflow)):
- overflow += 1
- fileObj = open(getfilename(folder,filename,overflow),"w")
- for index in range(len(classlist)):
- fileObj.write("%s: %s\n" % (index+1,classlist[index]))
- fileObj.close()
- print("Saved as '%s'" % getfilename(folder,filename,overflow))
- #--------------#
- # MAIN PROGRAM #
- #--------------#
- readfolder = ""
- filename = ""
- classname = ""
- task = "all"
- while True:
- if task == 'selectclass' or task == 'all':
- #välj mapp och klassnamn
- while True:
- # om användaren misslyckas pga vadsomhelst att välja klass
- # så ska hen välja om mapp.
- readfolder = selectreadfolder()
- filename,classname = selectclass(readfolder)
- if type(filename) == str:
- break
- # path = path till filen, mapp och filnamn tillsammans
- path = os.path.join(readfolder,filename)
- if task == 'switchfolder' or task == 'all':
- # välj mapp att spara de slumpade klass-filerna
- writefolder = selectwritefolder()
- # randomisera klass
- classmates = getclassmates(path)
- randomclass = randomise(classmates)
- if task == "savenew" or task == "all":
- # spara i en mapp
- save(classname,randomclass,writefolder)
- print("To quit, type 'quit'.")
- print("To change class, type 'selectclass'.")
- print("To change location for randomised files, type 'switchfolder'")
- print("To create another randomised file just press enter.")
- userinput = input("> ").lower()
- if userinput == 'quit':
- break
- elif userinput == 'selectclass':
- task = userinput
- elif userinput == 'switchfolder':
- task = userinput
- elif userinput == '':
- task = 'savenew'
- else:
- print("Unknown command ('%s')!" % userinput)
- task = "N/A"
- print("Stopped.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement