Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.48 KB | None | 0 0
  1. def form(s):
  2.     S = open(s)
  3.  
  4.     def r(text):
  5.         for i in range(len(text)):
  6.             if (text[i] == '['):
  7.                 for j in range(len(text) - i):
  8.                     if (text[i + j] == ']'):
  9.                         return [text[i + 1:i + j]] + r(text[i + j + 1:])
  10.  
  11.         return []
  12.  
  13.     l = list()
  14.  
  15.     for e in r(S.read()):
  16.         l.append(e)
  17.  
  18.     m = l[:]
  19.     d = dict()
  20.  
  21.     for i in range(len(m)):
  22.         if (m[i][0] == '#'):
  23.             if (m[i][1:] == 'date'):
  24.                 import datetime
  25.  
  26.                 d[m[i]] = str(datetime.date.today())
  27.             elif (m[i][1:] == 'time'):
  28.                 import datetime
  29.                
  30.                 d[m[i]] = str(datetime.datetime.now().time())[:-7]
  31.        
  32.         for j in range(len(m[i])):
  33.             if (m[i][j] == ':'):
  34.                 options = list()
  35.  
  36.                 for option in m[i][j + 1:].split(','):
  37.                     option = option.strip()
  38.                     options.append(option)
  39.  
  40.                 m[i] = (m[i][:j], options)
  41.                
  42.                 break
  43.  
  44.     for i in range(len(m)):
  45.         if (type(m[i]) == str):
  46.             if (m[i][0] != '#'):
  47.                 inp = input(m[i] + ': ')
  48.                 d[m[i]] = inp
  49.         elif (type(m[i]) == tuple):
  50.             print(m[i][0] + ': ')
  51.  
  52.             for j in range(len(m[i][1])):
  53.                 print(str(j + 1) + ' - ' + m[i][1][j])
  54.  
  55.             inp = int(input('Choose an option: '))
  56.             d[l[i]] = m[i][1][inp - 1]
  57.  
  58.     S.close()
  59.    
  60.     def modify(text):
  61.         for i in range(len(text)):
  62.             if (text[i] == '['):
  63.                 for j in range(len(text) - i):
  64.                     if (text[i + j] == ']'):
  65.                         return text[:i] + d[text[i + 1:i + j]] + modify(text[i + j + 1:])
  66.        
  67.         return text
  68.  
  69.     file = d[l[0]] + '_' + s
  70.    
  71.     with open(s, 'r') as S, open(file, 'w') as R:
  72.         for line in S:
  73.             R.write(modify(line))
  74.  
  75.     import os
  76.  
  77.     print('Done! Here is path to your file: ')
  78.     print(os.path.join(os.getcwd(), file))
  79.  
  80. def duplicates(d, ext = 'txt', delete = False):
  81.     import os
  82.     import hashlib
  83.  
  84.     files = list()
  85.     hashes = dict()
  86.     dups = list()
  87.     c = 0
  88.  
  89.     def walk(directory):
  90.         for name in os.listdir(directory):
  91.             path = os.path.join(directory, name)
  92.            
  93.             if (os.path.isfile(path)):
  94.                 l = name.split('.')
  95.  
  96.                 if (l[len(l) - 1] == ext):
  97.                     files.append(path)
  98.             else:
  99.                 walk(path)
  100.  
  101.     walk(d)
  102.  
  103.     for file in files:
  104.        
  105.         cmd = os.popen('certUtil -hashfile "' + file + '" md5')
  106.         cmd.readline()
  107.         h = cmd.readline()
  108.         cmd.close()
  109.        
  110.         if (h in hashes):
  111.             hashes[h].append(file)
  112.         else:
  113.             hashes[h] = [file]
  114.  
  115.     for h, f in hashes.items():
  116.         if (len(f) > 1):
  117.             for i in range(len(f)):
  118.                 if (i == 0):
  119.                     dups.append([f[i]])
  120.                 else:
  121.                     dups[c].append(f[i])
  122.                
  123.             c += 1
  124.  
  125.     if (delete == False):
  126.         for i in range(len(dups)):
  127.             for j in range(len(dups[i])):
  128.                 print(dups[i][j])
  129.  
  130.             if (i != (len(dups) - 1)):
  131.                 print()
  132.     elif (delete == True):
  133.         p = False
  134.        
  135.         for f in dups:
  136.             if (len(f) > 1):
  137.                 p = True
  138.  
  139.         if (p == True):
  140.             print('Removed duplicated files: ')
  141.        
  142.         for i in range(len(dups)):
  143.             for j in range(len(dups[i]) - 1):
  144.                 os.remove(dups[i][j + 1])
  145.                
  146.                 print(dups[i][j + 1])
  147.  
  148.             if (i != (len(dups) - 1)):
  149.                 print()
  150.  
  151. def add(db):
  152.     import dbm
  153.     import pickle
  154.    
  155.     d = dbm.open(db, 'c')
  156.     student = input('Student ID: ')
  157.     name = input('Name: ')
  158.     surname = input('Surname: ')
  159.     midterm1 = input('Midterm-1: ')
  160.     midterm2 = input('Midterm-2: ')
  161.     final = input('Final: ')
  162.  
  163.     info = [name, surname, (midterm1, midterm2, final)]
  164.     d[student] = pickle.dumps(info)
  165.    
  166.     d.close()
  167.    
  168.     print(name + ' ' + surname + ' has been added to the database!')
  169.  
  170. def list_all(db):
  171.     import dbm
  172.     import pickle
  173.  
  174.     d = dbm.open(db, 'r')
  175.    
  176.     for key in d:
  177.         info = pickle.loads(d[key])
  178.  
  179.         print(str(key, 'utf-8') + ' - ' + info[0] + ' ' + info[1])
  180.  
  181.     d.close()
  182.  
  183. def total_grade(db, student):
  184.     import dbm
  185.     import pickle
  186.  
  187.     d = dbm.open(db, 'r')
  188.     student = str(student)
  189.    
  190.     if (student.encode('utf-8') in d):
  191.         info = pickle.loads(d[student])
  192.         grade = (int(info[2][0])*30)/100 + (int(info[2][1])*30)/100 + (int(info[2][1])*40)/100
  193.  
  194.         print(grade)
  195.     else:
  196.         print('There is no student with such ID in the database!')
  197.  
  198.     d.close()
  199.  
  200. def datb():
  201.     while True:
  202.         print('1-Add student')
  203.         print('2-List of student')
  204.         print('3-Total grade of students')
  205.         print('4-Exit')
  206.         x=int(input('Choose one option: '))
  207.         if x==4:
  208.             break
  209.         elif x==1:
  210.             add()
  211.         elif x==2:
  212.             list_all()
  213.         elif x==3:
  214.             try:
  215.                 total_grade()
  216.             except:
  217.                 print('No such student in base')
  218.                 print('Try again')
  219.        
  220.     data.close()
  221. datb()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement