Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def form(s):
- S = open(s)
- def r(text):
- for i in range(len(text)):
- if (text[i] == '['):
- for j in range(len(text) - i):
- if (text[i + j] == ']'):
- return [text[i + 1:i + j]] + r(text[i + j + 1:])
- return []
- l = list()
- for e in r(S.read()):
- l.append(e)
- m = l[:]
- d = dict()
- for i in range(len(m)):
- if (m[i][0] == '#'):
- if (m[i][1:] == 'date'):
- import datetime
- d[m[i]] = str(datetime.date.today())
- elif (m[i][1:] == 'time'):
- import datetime
- d[m[i]] = str(datetime.datetime.now().time())[:-7]
- for j in range(len(m[i])):
- if (m[i][j] == ':'):
- options = list()
- for option in m[i][j + 1:].split(','):
- option = option.strip()
- options.append(option)
- m[i] = (m[i][:j], options)
- break
- for i in range(len(m)):
- if (type(m[i]) == str):
- if (m[i][0] != '#'):
- inp = input(m[i] + ': ')
- d[m[i]] = inp
- elif (type(m[i]) == tuple):
- print(m[i][0] + ': ')
- for j in range(len(m[i][1])):
- print(str(j + 1) + ' - ' + m[i][1][j])
- inp = int(input('Choose an option: '))
- d[l[i]] = m[i][1][inp - 1]
- S.close()
- def modify(text):
- for i in range(len(text)):
- if (text[i] == '['):
- for j in range(len(text) - i):
- if (text[i + j] == ']'):
- return text[:i] + d[text[i + 1:i + j]] + modify(text[i + j + 1:])
- return text
- file = d[l[0]] + '_' + s
- with open(s, 'r') as S, open(file, 'w') as R:
- for line in S:
- R.write(modify(line))
- import os
- print('Done! Here is path to your file: ')
- print(os.path.join(os.getcwd(), file))
- def duplicates(d, ext = 'txt', delete = False):
- import os
- import hashlib
- files = list()
- hashes = dict()
- dups = list()
- c = 0
- def walk(directory):
- for name in os.listdir(directory):
- path = os.path.join(directory, name)
- if (os.path.isfile(path)):
- l = name.split('.')
- if (l[len(l) - 1] == ext):
- files.append(path)
- else:
- walk(path)
- walk(d)
- for file in files:
- cmd = os.popen('certUtil -hashfile "' + file + '" md5')
- cmd.readline()
- h = cmd.readline()
- cmd.close()
- if (h in hashes):
- hashes[h].append(file)
- else:
- hashes[h] = [file]
- for h, f in hashes.items():
- if (len(f) > 1):
- for i in range(len(f)):
- if (i == 0):
- dups.append([f[i]])
- else:
- dups[c].append(f[i])
- c += 1
- if (delete == False):
- for i in range(len(dups)):
- for j in range(len(dups[i])):
- print(dups[i][j])
- if (i != (len(dups) - 1)):
- print()
- elif (delete == True):
- p = False
- for f in dups:
- if (len(f) > 1):
- p = True
- if (p == True):
- print('Removed duplicated files: ')
- for i in range(len(dups)):
- for j in range(len(dups[i]) - 1):
- os.remove(dups[i][j + 1])
- print(dups[i][j + 1])
- if (i != (len(dups) - 1)):
- print()
- def add(db):
- import dbm
- import pickle
- d = dbm.open(db, 'c')
- student = input('Student ID: ')
- name = input('Name: ')
- surname = input('Surname: ')
- midterm1 = input('Midterm-1: ')
- midterm2 = input('Midterm-2: ')
- final = input('Final: ')
- info = [name, surname, (midterm1, midterm2, final)]
- d[student] = pickle.dumps(info)
- d.close()
- print(name + ' ' + surname + ' has been added to the database!')
- def list_all(db):
- import dbm
- import pickle
- d = dbm.open(db, 'r')
- for key in d:
- info = pickle.loads(d[key])
- print(str(key, 'utf-8') + ' - ' + info[0] + ' ' + info[1])
- d.close()
- def total_grade(db, student):
- import dbm
- import pickle
- d = dbm.open(db, 'r')
- student = str(student)
- if (student.encode('utf-8') in d):
- info = pickle.loads(d[student])
- grade = (int(info[2][0])*30)/100 + (int(info[2][1])*30)/100 + (int(info[2][1])*40)/100
- print(grade)
- else:
- print('There is no student with such ID in the database!')
- d.close()
- def datb():
- while True:
- print('1-Add student')
- print('2-List of student')
- print('3-Total grade of students')
- print('4-Exit')
- x=int(input('Choose one option: '))
- if x==4:
- break
- elif x==1:
- add()
- elif x==2:
- list_all()
- elif x==3:
- try:
- total_grade()
- except:
- print('No such student in base')
- print('Try again')
- data.close()
- datb()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement