Python script for creating Java Script that populates a webform

This script reads the obtained marks of the students from an Excel file and creates a Java Script that can be used to populate a certain webform automatically. In short, data entry is not a problem anymore.

#===================================================================#
#   Title:  JavaScript Maker for Marks input                        #
#   Author: Dhiman Roy, Dept. of ME (BUET)                          #
#   Date:   April 12, 2021                                          #
#   Licensed under Creative Commons                                 #
#===================================================================#

import os
import pandas as pd
from pathlib import Path

os.chdir(os.path.dirname(os.path.abspath(__file__)))

try:
    os.mkdir("JS")
    print("\n\tJS directory is created.")
except IOError:
    print("\n\tJS directory already exists.")


CURR_DIR = os.getcwd()
jsDir = os.path.join(CURR_DIR, "JS")
#print(CURR_DIR)
txt_folder = Path(CURR_DIR).rglob('*.xlsx') #reads .xlsx files only
#print(txt_folder)
files = [x for x in txt_folder]

#print(files)
#print("\n")

def midOrall():
    value = input("\n\tDo you want script for Mid (m) or All (a)? ")
    if value == 'm' or value == 'a':
        #print(value)
        return value
    else:
        print("\n\tPlease select one...")
        midOrall()

def quitOrNot():
    quitDmn = input("\t\tDo you want to quit? (Y/N): ")
    if quitDmn == 'y' or quitDmn == 'Y' or quitDmn == 'yes' or quitDmn == 'Yes' or quitDmn == 'YES':
        quit()
        
    elif quitDmn == 'n' or quitDmn == 'N' or quitDmn == 'no' or quitDmn == 'No' or quitDmn == 'NO':
        print()
    else:
        quitOrNot()
        
def mustQuit():
    input("\t\tHit enter to exit.")
    quit()

def stringconv(dmnMark, dmnRow, dmnSec, dmnFile, filename):
    try:
        return str(int(dmnMark))
    except:
        print("\t\tEmpty cell in SL %i, Sheet name: %s, Workbook: %s" %(dmnRow + 1, dmnSec, dmnFile))
        #quitOrNot()
        file.close()
        os.remove(filename)
        mustQuit()
        

if midOrall() == 'm':       
    for name in sorted(files):

        sheetForSection = pd.ExcelFile(name)
        section = sheetForSection.sheet_names
        fName = os.path.basename(name)
        
        substring = ['theory', 'THEORY', 'Theory']
        theoryfile = []
        if substring[0] in os.path.splitext(os.path.basename(name))[0] or substring[1] in os.path.splitext(os.path.basename(name))[0] or substring[2] in os.path.splitext(os.path.basename(name))[0]:
            header_val = 1
            theoryfile.append(os.path.basename(name)) 
        else:
            header_val = 0

        print("\n\tSections from %s" %fName)
        for sec in section:
            data = pd.read_excel(name, index_col = 0, usecols = "C:H", header = header_val, sheet_name = sec)
            #print(data)
            print("\t-%s" %sec)
            
            marks = data.values.tolist()
            #print(marks)
            filename = sec + "_" + os.path.splitext(os.path.basename(name))[0] + ".txt"
            #print(filename)
            if header_val == 1:
                file = open(os.path.join(jsDir, filename),"w")
                i = 0
                for each in marks:
                    if each[3] == 'abs':
                        file.write("document.getElementById('midterm_%d').value = '%s';\n" %(i, each[3]))               #mid absent
                    else:
                        file.write("document.getElementById('midterm_%d').value = '%s';\n" %(i, stringconv(each[3], i, sec, fName, filename)))     #mid
                    file.write("calTotal(midterm_%d);\n" %i)
                    i = i + 1
                
                file.close()
            else:
                print("\n\t...Sessionals are skipped...")
else:
    for name in sorted(files):

        sheetForSection = pd.ExcelFile(name)
        section = sheetForSection.sheet_names
        fName = os.path.basename(name)
        
        substring = ['theory', 'THEORY', 'Theory']
        theoryfile = []

        if substring[0] in os.path.splitext(os.path.basename(name))[0] or substring[1] in os.path.splitext(os.path.basename(name))[0] or substring[2] in os.path.splitext(os.path.basename(name))[0]:
            header_val = 1
            theoryfile.append(os.path.basename(name)) 
        else:
            header_val = 0

        print("\n\tSections from %s" %fName)
        for sec in section:
            data = pd.read_excel(name, index_col = 0, usecols = "C:H", header = header_val, sheet_name = sec)
            #print(data)
            print("\t-%s" %sec)
            
            marks = data.values.tolist()
            #print(marks)
            filename = sec + "_" + os.path.splitext(os.path.basename(name))[0] + ".txt"
            #print(filename)
            if header_val == 0:
                file = open(os.path.join(jsDir, filename),"w")
                i = 0
                for each in marks:
                    file.write("document.getElementById('attendance_%d').value = '%s';\n" %(i, stringconv(each[0], i, sec, fName, filename)))      #attendance
                    file.write("document.getElementById('performance_%d').value = '%s';\n" %(i, stringconv(each[1], i, sec, fName, filename)))       #classtest
                    if each[2] == 'abs':
                        file.write("document.getElementById('sessional_%d').value = '%s';\n" %(i, each[2]))               #sessional final absent
                    else:
                        file.write("document.getElementById('sessional_%d').value = '%s';\n" %(i, stringconv(each[2], i, sec, fName, filename)))     #sessoinal final
                    file.write("calTotal(sessional_%d);\n" %i)
                    i = i + 1
        
                file.close()

            else:
                file = open(filename,"w")
                i = 0
                for each in marks:
                    file.write("document.getElementById('attendance_%d').value = '%s';\n" %(i, stringconv(each[0], i, sec, fName, filename)))      #attendance
                    file.write("document.getElementById('classtest_%d').value = '%s';\n" %(i, stringconv(each[1], i, sec, fName, filename)))       #classtest
                    file.write("document.getElementById('assignment_%d').value = '%s';\n" %(i, stringconv(each[2], i, sec, fName, filename)))      #assignment
                    if each[4] == 'abs':
                        file.write("document.getElementById('final_%d').value = '%s';\n" %(i, each[4]))                 #final absent
                    else:
                        file.write("document.getElementById('final_%d').value = '%s';\n" %(i, stringconv(each[4], i, sec, fName, filename)))       #final
                    if each[3] == 'abs':
                        file.write("document.getElementById('midterm_%d').value = '%s';\n" %(i, each[3]))               #mid absent
                    else:
                        file.write("document.getElementById('midterm_%d').value = '%s';\n" %(i, stringconv(each[3], i, sec, fName, filename)))     #mid
                    file.write("calTotal(midterm_%d);\n" %i)
                    i = i + 1
                
                file.close()

print("\n\t\t====================")
print("\t\tScripts are ready!!!")
print("\t\t====================")
#print("\n")
input("\n\t\tPress enter to exit...\n")