Skip to content

Instantly share code, notes, and snippets.

@thehappydinoa
Created October 16, 2019 15:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thehappydinoa/0708407d6a33516c86bfda54caa5d867 to your computer and use it in GitHub Desktop.
Save thehappydinoa/0708407d6a33516c86bfda54caa5d867 to your computer and use it in GitHub Desktop.

new_lab.py

Usage

usage: new_lab.py [-h] -l NAME -q Q [-n NAME] [-c C] [-m]

Create lab setup

optional arguments:
  -h, --help            show this help message and exit
  -l NAME, --lab NAME   the lab name
  -q Q, --questions Q   number of questions
  -n NAME, --name NAME  name
  -c C, --course C      course code
  -m, --markdown        written as markdown

Example

python new_lab.py -l "Lab 1" -q 5 -n "Aidan Holland" -c "CS164-B"
#!/usr/bin/env python3
import argparse
import os
import re
def parse_lab_name(lab_name):
rg = re.compile("((?:[a-z][a-z]+))(\\s+)(\\d+)", re.IGNORECASE | re.DOTALL)
m = rg.search(lab_name)
if m:
return m.group(3)
return
def parse_file_name(lab_name, markdown=False):
file_ext = "txt"
if markdown:
file_ext = "md"
lab_number = parse_lab_name(lab_name)
file_name = "./{0}/questions.{1}".format(lab_name, file_ext)
if lab_number:
file_name = "./{0}/questions{1}.{2}".format(
lab_name, lab_number, file_ext)
return file_name
def create_file(lab_name="Lab", questions=1, name="YOUR NAME", course="CS164-B", markdown=False):
try:
os.mkdir(lab_name)
except FileExistsError:
raise(FileExistsError("A lab with that name already exsists."))
exit(1)
file_name = parse_file_name(lab_name, markdown=markdown)
content = "# {0}\n\n{1} - {2}\n\n\n".format(lab_name, name, course)
for question in range(questions):
content += "## Question {0}\n\n".format(question + 1)
f = open(file_name, "w")
f.write(content)
f.close()
return file_name
def main():
parser = argparse.ArgumentParser(description="Create lab setup")
parser.add_argument("-l", "--lab", dest="lab_name", metavar="NAME",
help="the lab name", required=True)
parser.add_argument("-q", "--questions", dest="questions", metavar="Q", type=int,
help="number of questions", required=True)
parser.add_argument("-n", "--name", dest="name", metavar="NAME", default="YOUR NAME",
help="name")
parser.add_argument("-c", "--course", dest="course", metavar="C", default="CS164-B",
help="course code")
parser.add_argument("-m", "--markdown", dest="markdown", action="store_true",
help="written as markdown")
args = parser.parse_args()
kwargs = vars(args)
file_name = create_file(**kwargs)
print("File written to {0}".format(file_name))
if __name__ == "__main__":
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment