Repository navigation
Expand file tree
/
Copy pathgenerate-Klausur.py
More file actions
95 lines (70 loc) · 2.89 KB
/
Copy pathgenerate-Klausur.py
File metadata and controls
95 lines (70 loc) · 2.89 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/python3
# Benoetigt: ezodf (python) und seine Abhaenigkeiten, Python3, pdflatex, pdfnup
# Lauffaehig unter Windows.
# Dieses Skript generiert aus der Kursliste und der aktet-Schule-Klausur.tex eine xls Tabelle
# Zu benutzten mit "$ python generate-klausur.py [[DATEINAME.ods]] [[DATEINAME.tex]]"
# Geschrieben von Jörn Hornig, 2017-03-10.
import os
import sys
import platform
import datetime
import mmap
# # # # # # # # # # # # # # # # # #
#
# String in Excel-Spalte finden
#
# # # # # # # # # # # # # # # # # #
def findString(myString, myTabelle, myXlsSpalte, rangeTo, rangeFrom=0):
for i in range(rangeFrom, rangeTo):
if str(myTabelle[str(myXlsSpalte)+str(i)].value)==myString:
return i
return 0
# # # # # # # # # # # # # # # # # #
#
# Inputfile verarbeiten und Sheets anlegen
#
# # # # # # # # # # # # # # # # # #
input_datei1 = sys.argv[1]
input_datei2 = sys.argv[2]
from ezodf import opendoc, Sheet
doc1 = opendoc(input_datei1)
kursliste = doc1.sheets['Kursliste-Settings']
odsName="klausur1.ods"
if platform.system() == 'Linux': #Datei löschen Befehl Linux
os.system("copy blanko-klausur.ods " + odsName)
if platform.system() == 'Windows': #Datei löschen Befehl Windows
#os.system("del " + odsName)
os.system("copy blanko-klausur.ods " + odsName)
doc2 = opendoc(odsName)
klausur = doc2.sheets['Klausur']
# # # # # # # # # # # # # # # # # #
#
# tex File mit Paket-Schule nach Aufgaben durchsuchen und in xls schreiben
#
# # # # # # # # # # # # # # # # # #
gesamtpunkte = 0
with open(input_datei2) as texfile:
anzAufgaben = 0
for line in texfile:
#print(line.find("\\begin{aufgabe}"))
if line.find("\\begin{aufgabe}")>-1: #Finde Aufgabe in tex
if line.find("%", 0, line.find("\\begin{aufgabe}"))==-1: #überprüfe ob Aufgabe auskommentiert ist
line = line.strip()
anzAufgaben = anzAufgaben + 1
punkte = line[line.find("}{")+2:-1]
gesamtpunkte = gesamtpunkte + int(punkte)
klausur[chr(anzAufgaben+64+6)+'1'].set_value("A" + str(anzAufgaben))
klausur[chr(anzAufgaben+64+6)+'2'].set_value(int(punkte))
print(str(anzAufgaben) + " Aufgaben")
print("Gesamtpunke: "+ str(gesamtpunkte))
# # # # # # # # # # # # # # # # # #
#
# Daten Kursliste einlesen und in xls schreiben
#
# # # # # # # # # # # # # # # # # #
for i in range (5,40):
vorname = kursliste['B'+str(i)] #Vornamen speichern
nachname = kursliste['C'+str(i)] #Nachnamen speichern
if str(vorname.value) != "None" and str(nachname.value) != "None":
klausur['B'+str(i-1)].set_value((vorname.value) + " " + str(nachname.value))
doc2.saveas(odsName)