<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Lab 7
1) Scrieti un program care la fiecare x secunde unde x va fi aleator ales la fiecare iteratie (din intervalul [a, b] , unde a, b sunt date ca argumente) afiseaza de cate minute ruleaza programul (in minute, cu doua zecimale). Programul va rula la infinit.
Step1:  2) Scrieti doua functii de verificare daca un numar este prim, si verificati care dintre ele este mai eficienta din punct de vedere al timpului.
3) Gasiti toate fisierele duplicate dintr-un director dat ca argument si afisati timpul de rulare. Calea grupurilor de fisiere duplicate vor fi scrise intr-un fisier output.txt. (duplicat in fct de continut)
4) Sa se scrie un script care primeste ca argument un director si creeaza un fisier JSON cu date despre toate fisierele din acel director. Pentru fiecare fisier vor fi afisate urmatoarele informatii
Step2:  5) Sa se creeze doua scripturi care sa comunice intre ele prin date serializate. Primul script va salva periodic o lista cu toate fisierele dintr-un director iar al doilea script va adauga intr-o arhiva toate fisierele cu size mai mic de 100kb si modificate cu cel mult 5 minute in urma (nu va fi adaugat acelasi fisier de 2 ori).
6) Sa se scrie un script care afiseaza in ce zi a saptamanii este anul nou, pentru ultimii x ani (x este dat ca argument).
<ASSISTANT_TASK:>
Python Code:
import time
import random
#import sys
#a = int(sys.argv[1])
#b = int(sys.argv[2])
def wait(x):
    time.sleep(x)
def time_cron(a,b):
    time_interval = random.uniform(a,b)
    # while(1):
    # measure process time
    t0 = time.clock()
    wait(time_interval)
    print time.clock() - t0, "seconds process time"
    
    # measure wall time
    t0 = time.time()
    wait(time_interval)
    print time.time() - t0, "seconds wall time"
time_cron(0,2)
Explanation: Lab 7
1) Scrieti un program care la fiecare x secunde unde x va fi aleator ales la fiecare iteratie (din intervalul [a, b] , unde a, b sunt date ca argumente) afiseaza de cate minute ruleaza programul (in minute, cu doua zecimale). Programul va rula la infinit.
End of explanation
import os
import json
import hashlib
import time
def get_file_md5(filePath):
    h = hashlib.md5()
    h.update(open(filePath,"rb").read())
    return h.hexdigest()
def get_file_sha256(filePath):
    h = hashlib.sha256()
    h.update(open(filePath,"rb").read())
    return h.hexdigest()
def get_dir_data(dir_path):
    json_data = {}
    dir_path = os.path.realpath(dir_path)
    
    json_file = open(os.path.basename(dir_path) + '.json', 'w')
    
    print next(os.walk(dir_path))[2]
    #print os.path.basename(dir_path)
    
    for dir_file in next(os.walk(dir_path))[2]:
        file_data = {}
        
        #file_data["file_name"] = dir_file
        file_data[dir_file] = {}
        file_data[dir_file]["file_md5"] = get_file_md5(dir_file)
        file_data[dir_file]["file_sha256"] = get_file_sha256(dir_file)
        file_data[dir_file]["file_size"] = os.path.getsize(dir_file)
        
        file_time = time.gmtime(os.path.getctime(dir_file))
        file_data[dir_file]["file_time"] = time.strftime("%Y-%m-%d %I:%M:%S %p", file_time)
        file_data[dir_file]["file_path"] = os.path.realpath(dir_file)
        
        #print file_data
        json_data.update(file_data)
        #print json_data
    
    #print json_data
    json_data = json.dumps(json_data, sort_keys = True, indent=4, separators=(',', ': '))
    json_file.write( json_data )
    
    json_file.close()
    
get_dir_data('./')
Explanation: 2) Scrieti doua functii de verificare daca un numar este prim, si verificati care dintre ele este mai eficienta din punct de vedere al timpului.
3) Gasiti toate fisierele duplicate dintr-un director dat ca argument si afisati timpul de rulare. Calea grupurilor de fisiere duplicate vor fi scrise intr-un fisier output.txt. (duplicat in fct de continut)
4) Sa se scrie un script care primeste ca argument un director si creeaza un fisier JSON cu date despre toate fisierele din acel director. Pentru fiecare fisier vor fi afisate urmatoarele informatii: nume_fisier, md5_fisier, sha256_fisier, size_fisier (in bytes), cand a fost creat fisierul (in format human-readable) si calea absoluta catre fisier.
End of explanation
import datetime as dt
def weekday_new_year(x):
    today = dt.datetime.today()
    current_year = today.year
    #print today, '::', current_year
    
    for i in range(0, x):
        print current_year-i, ': ', dt.date(current_year-i, 1, 31).strftime("%A") #.weekday() shows only no
    
weekday_new_year(5)
Explanation: 5) Sa se creeze doua scripturi care sa comunice intre ele prin date serializate. Primul script va salva periodic o lista cu toate fisierele dintr-un director iar al doilea script va adauga intr-o arhiva toate fisierele cu size mai mic de 100kb si modificate cu cel mult 5 minute in urma (nu va fi adaugat acelasi fisier de 2 ori).
6) Sa se scrie un script care afiseaza in ce zi a saptamanii este anul nou, pentru ultimii x ani (x este dat ca argument).
End of explanation
<END_TASK>