While Memorizing vocab for GRE, I decided to jumble up my word list in random order. This small python utility program helped me achieve that. Hope it helps you as well.
'''
Author: Kunal Krishna
Date: 30/05/2023
'''
'''
Programme Purpose : Given a text file containing N lines,
return a new file which has reorder those lines in random order.
This has many utilities e.g. in memorizing a list of vocabulary.
Input: File1.text :
>a
>b
>c
Output: File2.text : Random ordering
>c
>a
>b
'''
import os
import re
import random
import numpy as np
# 1. Open file.txt : https://docs.python.org/3/library/functions.html#open
inpFile= open("D:\[win.kunal]\Desktop\Diff_Words.txt","r")
linesList = inpFile.readlines() #list of lines
# for line in linesList :
# line = line.strip("\n")
# 2. Create an output file
resPath= "D:\my_codes\py_code\LineRandomizer"
resFileName = 'Difficult_Words.txt'
file_result = open(os.path.join(resPath,resFileName), "w") # w : creates/overrides existing
# alternatively
# file_result = open("Difficult_Words.txt", "w")
count = 0
# 3.Process the lines : randomize
while (len(linesList) > 0) :
#chose a random word from the list
random_word = np.random.choice(linesList)
validWordExpression = "[~\*\#\w\s]"
if( len(random_word.strip()) >0
and re.match(validWordExpression, random_word) ) :
# write the random word in the new file
print(str(count+1)+". inserting..." + random_word.upper())
file_result.write(random_word.upper())
count +=1
#also remove the word from linesList to avoid repetation
linesList.remove(random_word)
# 4. Close the file
inpFile.close()
file_result.close()
if count>0 :
print(str(count)+" words inserted successfully!!!")
else :
print("No word(s) inserted.")