From 81accc1b9a6dbf1932a5b4fbc627ee1b0231fef0 Mon Sep 17 00:00:00 2001 From: Syatojkin_Evgenij Date: Thu, 10 Sep 2020 18:39:44 +0300 Subject: [PATCH 1/5] Point_1 1 --- Practice/EvgeniySyatoykin/1.py | 7 +++++++ Practice/EvgeniySyatoykin/2.1.py | 6 ++++++ 2 files changed, 13 insertions(+) create mode 100644 Practice/EvgeniySyatoykin/1.py create mode 100644 Practice/EvgeniySyatoykin/2.1.py diff --git a/Practice/EvgeniySyatoykin/1.py b/Practice/EvgeniySyatoykin/1.py new file mode 100644 index 00000000..5d019e8e --- /dev/null +++ b/Practice/EvgeniySyatoykin/1.py @@ -0,0 +1,7 @@ + +name = input("Введите имя: ") +print ("Привет", name) + + + + diff --git a/Practice/EvgeniySyatoykin/2.1.py b/Practice/EvgeniySyatoykin/2.1.py new file mode 100644 index 00000000..58116a5f --- /dev/null +++ b/Practice/EvgeniySyatoykin/2.1.py @@ -0,0 +1,6 @@ +def fun(a, b): + + if a > b: + print(f"max number={a}") + else: + print(f"max number{b}") \ No newline at end of file From 2737be298a4eff9ff123949f4373e13c4bce88d3 Mon Sep 17 00:00:00 2001 From: Syatojkin_Evgenij Date: Fri, 11 Sep 2020 19:20:40 +0300 Subject: [PATCH 2/5] Point_1 . --- Practice/.idea/workspace.xml | 162 +++++++++++++++++++++++++++++++ Practice/EvgeniySyatoykin/2.1.py | 11 ++- 2 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 Practice/.idea/workspace.xml diff --git a/Practice/.idea/workspace.xml b/Practice/.idea/workspace.xml new file mode 100644 index 00000000..60595e7f --- /dev/null +++ b/Practice/.idea/workspace.xml @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1603647092243 + + + + + + + \ No newline at end of file From dd4d7680b526561b0aa6d60714acbfbbcee0529a Mon Sep 17 00:00:00 2001 From: Syatojkin_Evgenij Date: Sun, 25 Oct 2020 20:42:14 +0300 Subject: [PATCH 5/5] Point_5 --- .idea/workspace.xml | 13 +++- Practice/EvgeniySyatoykin/task_ 7.4.py | 59 +++++++++++++++ .../EvgeniySyatoykin/{2.1.py => task_2.1.py} | 0 Practice/EvgeniySyatoykin/task_2.2.py | 13 ++++ Practice/EvgeniySyatoykin/task_2.3.py | 58 +++++++++++++++ Practice/EvgeniySyatoykin/task_4.1.py | 11 +++ Practice/EvgeniySyatoykin/task_4.2.py | 11 +++ Practice/EvgeniySyatoykin/task_4.3.py | 19 +++++ Practice/EvgeniySyatoykin/task_4.4.py | 29 ++++++++ Practice/EvgeniySyatoykin/task_4.5.py | 10 +++ Practice/EvgeniySyatoykin/task_4.6.py | 30 ++++++++ Practice/EvgeniySyatoykin/task_7.3 dump.py | 26 +++++++ Practice/EvgeniySyatoykin/task_7.3 load.py | 17 +++++ Practice/EvgeniySyatoykin/tssk_5.1.py | 14 ++++ Practice/EvgeniySyatoykin/tssk_5.2.py | 30 ++++++++ Practice/EvgeniySyatoykin/tssk_5.3.py | 41 ++++++++++ Practice/EvgeniySyatoykin/tssk_6.3.py | 16 ++++ Practice/EvgeniySyatoykin/tssk_6.4.py | 33 +++++++++ Practice/EvgeniySyatoykin/tssk_7.1.py | 23 ++++++ Practice/EvgeniySyatoykin/tssk_7.2.py | 15 ++++ Practice/EvgeniySyatoykin/tssk_pep8.py | 74 +++++++++++++++++++ 21 files changed, 541 insertions(+), 1 deletion(-) create mode 100644 Practice/EvgeniySyatoykin/task_ 7.4.py rename Practice/EvgeniySyatoykin/{2.1.py => task_2.1.py} (100%) create mode 100644 Practice/EvgeniySyatoykin/task_2.2.py create mode 100644 Practice/EvgeniySyatoykin/task_2.3.py create mode 100644 Practice/EvgeniySyatoykin/task_4.1.py create mode 100644 Practice/EvgeniySyatoykin/task_4.2.py create mode 100644 Practice/EvgeniySyatoykin/task_4.3.py create mode 100644 Practice/EvgeniySyatoykin/task_4.4.py create mode 100644 Practice/EvgeniySyatoykin/task_4.5.py create mode 100644 Practice/EvgeniySyatoykin/task_4.6.py create mode 100644 Practice/EvgeniySyatoykin/task_7.3 dump.py create mode 100644 Practice/EvgeniySyatoykin/task_7.3 load.py create mode 100644 Practice/EvgeniySyatoykin/tssk_5.1.py create mode 100644 Practice/EvgeniySyatoykin/tssk_5.2.py create mode 100644 Practice/EvgeniySyatoykin/tssk_5.3.py create mode 100644 Practice/EvgeniySyatoykin/tssk_6.3.py create mode 100644 Practice/EvgeniySyatoykin/tssk_6.4.py create mode 100644 Practice/EvgeniySyatoykin/tssk_7.1.py create mode 100644 Practice/EvgeniySyatoykin/tssk_7.2.py create mode 100644 Practice/EvgeniySyatoykin/tssk_pep8.py diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 22d10500..07c971df 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -17,7 +17,12 @@ - + + + + + + @@ -30,4 +35,10 @@ + + + + + + \ No newline at end of file diff --git a/Practice/EvgeniySyatoykin/task_ 7.4.py b/Practice/EvgeniySyatoykin/task_ 7.4.py new file mode 100644 index 00000000..93bb7fc6 --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_ 7.4.py @@ -0,0 +1,59 @@ +import os +import datetime +from pathlib import Path + + +def del_all(path_to_dir): + ''' + The function creates infinity('while: True') tracking for maximally introduced dir, + while the dir has files and dirs, and deletes dir only it is empty. After the function + goes to less nested level. + For testing were created: dir test(f1.txt and dir p1(f2.txt, dir p2(empty), dir p3(f131.txt, f132.txt)). + :argument is path_to_dir + :return is None + ''' + static_main_dir = path_to_dir # for remember name of our main dir + print(static_main_dir) + + def del_in_dir(path_to_dir): + while True: + for i in os.listdir(path_to_dir): + path_of_item = os.path.join(path_to_dir, i) # for reading + if os.path.isfile(path_of_item): + print(f" ' {i} ' is file") # for testing + time_of_create = datetime.datetime.fromtimestamp(os.path.getctime(path_of_item)) + min_of_live = (datetime.datetime.now() - time_of_create).seconds // 60 # [min] + if min_of_live >= 1: # >= 1 [min] + print(f"delete file {i}") # for testing + os.remove(path_of_item) # delete file + else: # for testing + print(f"{i} is young") + + else: + print(f"' {i} ' is dir") # for testing + #is_empty = not bool(sorted(Path(path_of_item).rglob('*'))) + #if not is_empty: # only if the dir isn't empty + print(f"======> go to into {path_of_item}") # for testing + del_in_dir(path_of_item) # go into this dir + + # after 'go to into dir' + time_of_create = datetime.datetime.fromtimestamp(os.path.getctime(path_of_item)) + min_of_live = (datetime.datetime.now() - time_of_create).seconds // 60 # [min] + if min_of_live >= 2: # >= 2 [min] + print(f"delete dir {i}") # for testing + try: + os.rmdir(os.path.join(path_to_dir, i)) # delete only empty dir, else it trows Exception + except OSError: + print(f"Dir({i}) is not empty! I can not delete it.") + else: # for testing + print(f"dir {i} is young") + + is_empty = not bool(sorted(Path(path_to_dir).rglob('*'))) + if is_empty and path_to_dir != static_main_dir: # if dir is empty and it isn't main dir + break + + del_in_dir(path_to_dir) + + +if __name__ == "__main__": + del_all('./test') diff --git a/Practice/EvgeniySyatoykin/2.1.py b/Practice/EvgeniySyatoykin/task_2.1.py similarity index 100% rename from Practice/EvgeniySyatoykin/2.1.py rename to Practice/EvgeniySyatoykin/task_2.1.py diff --git a/Practice/EvgeniySyatoykin/task_2.2.py b/Practice/EvgeniySyatoykin/task_2.2.py new file mode 100644 index 00000000..9933e0b4 --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_2.2.py @@ -0,0 +1,13 @@ +def numbers(a, b): + if a > b: + return a + else: + return b + +print("Enter two nubmers, please!") +first = int(input("Enter first number: ")) +second = int(input("Enter second number: ")) +result = numbers(first, second) +print(f"This number is bigger: {result}") + +numbers(first, second) diff --git a/Practice/EvgeniySyatoykin/task_2.3.py b/Practice/EvgeniySyatoykin/task_2.3.py new file mode 100644 index 00000000..b8f5d1dd --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_2.3.py @@ -0,0 +1,58 @@ +class Specif(): + speed = 3 + jump = 4 + shot = 10 + +class Charact(): + x = 0 + y = 0 + def walk(self): + self.x = self.x + 1 + + def show_where_i(self): + print("x:{}, y{}", self.x, self.y) + + def fly(self): + print("I can'fly") + + def shoot(self): + print("I can shoot") + + def jump(self): + print("I can jump") + +class SpecCharact(Charact): + + def fly(self): + self.y = self.y + 1 + +def main(): + + spec = Specif() + charact = Charact() + scharact = SpecCharact() + persons = list() + persons.append(charact) + persons.append(scharact) + + while(1): + print("input number of player") + number = int(input()) + print("input command to player") + command = input() + + if command == "go": + persons[number].go() + elif command == "shoot": + persons[number].shoot() + elif command == "fly": + persons[number].fly() + else: + print("Unknown command: {}".format(command)) + + persons[number].show_where_i() + + if persons[number].x == spec.x: + print("player{} got item", ) + + diff --git a/Practice/EvgeniySyatoykin/task_4.1.py b/Practice/EvgeniySyatoykin/task_4.1.py new file mode 100644 index 00000000..0c3efa6a --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_4.1.py @@ -0,0 +1,11 @@ +def numbers(): + for i in range(1, 101): + if i % 15 == 0: + print('Fizz') + elif i % 5 == 0: + print('Buzz') + elif i % 3 == 0: + print('FizzBuzz') + else: + print(i) +numbers() \ No newline at end of file diff --git a/Practice/EvgeniySyatoykin/task_4.2.py b/Practice/EvgeniySyatoykin/task_4.2.py new file mode 100644 index 00000000..3c4231ff --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_4.2.py @@ -0,0 +1,11 @@ +import random + + +N = 5 +def new_line(array): + for i in range(N): + print(f'{i} цифра равна {array[i]}') + +Line = [random.randint(0, 9) for j in range(N)] +print(Line) +new_line(Line) diff --git a/Practice/EvgeniySyatoykin/task_4.3.py b/Practice/EvgeniySyatoykin/task_4.3.py new file mode 100644 index 00000000..a8879081 --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_4.3.py @@ -0,0 +1,19 @@ +import random + + +N = 10 +def sorting(array): + + for i in range(len(array) - 1): + min = i + next_min = i + 1 + while next_min < len(array): + if array[next_min] < array[min]: + min = next_min + next_min += 1 + array[i], array[min] = array[min], array[i] + +Line = [random.randint(0, 9) for j in range(N)] +print(Line) +sorting(Line) +print(Line) diff --git a/Practice/EvgeniySyatoykin/task_4.4.py b/Practice/EvgeniySyatoykin/task_4.4.py new file mode 100644 index 00000000..7f167f9a --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_4.4.py @@ -0,0 +1,29 @@ +def tab_space(line, flag): + if flag is True: + array = line.split('\t') + newLine = ' '.join(array) + print(newLine) + else: + array = line.split(' ') + newLine = '\t'.join(array) + print(newLine) + +tab = "Жил\tбыл\tпес!" +space = "Жил был пес!" +bool = True +print(tab) +tab_space(tab, bool) +bool = False +print(space) +tab_space(space, bool) + +def file_spece_or_tab(line): + array = line.split(' ') + newLine = '\t'.join(array) + print(newLine) + +file = open('myfile.txt', 'r') +line = file.read() +file.close() + +file_spece_or_tab(line) \ No newline at end of file diff --git a/Practice/EvgeniySyatoykin/task_4.5.py b/Practice/EvgeniySyatoykin/task_4.5.py new file mode 100644 index 00000000..73d1750b --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_4.5.py @@ -0,0 +1,10 @@ +def templates(newLine): + dict = {'снег':'дождь', 'не':'очень'} + + for k, v in dict.items(): + newLine = newLine.replace(k, v) + print(newLine) + +line = 'Сегоня идет снег. Я не люблю это время.' +print(line) +templates(line) \ No newline at end of file diff --git a/Practice/EvgeniySyatoykin/task_4.6.py b/Practice/EvgeniySyatoykin/task_4.6.py new file mode 100644 index 00000000..102bd591 --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_4.6.py @@ -0,0 +1,30 @@ +def matrix(list, num, list_len): + index = 0 + count = 0 + + while count != list_len: + count = 0 + + for i in list: + try: + index = i.index(num) + + except ValueError: + count += 1 + + if count == list_len: + break + + for j in list: + del j[index] + + print(list) + +num = 9 +list = [[1, 2, 3, 4, 5], + [9, 9, 3, 4, 5], + [1, 2, 3, 4, 5], + [1, 2, 3, 4, 5], + [1, 2, 3, 9, 5]] +list_len = (len(list)) +matrix(list, num, list_len) diff --git a/Practice/EvgeniySyatoykin/task_7.3 dump.py b/Practice/EvgeniySyatoykin/task_7.3 dump.py new file mode 100644 index 00000000..dc4270e6 --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_7.3 dump.py @@ -0,0 +1,26 @@ +import pickle +from random import randint as rand +from random import choice +from libHuman import Human + + +def create_human(number): + humans = [] + first_name = ["Noah", "Mason", "Liam", "Alex", "Jack", "Harry", "Oscar", "Jacob"] + last_name = ["Austin", "Birch", "Carey", "Day", "Dean", "Simon", "Gate", "Taft"] + position = ["baker", "poet", "butcher", "cook", "doctor", "engineer", "farmer", "pilot"] + + for i in range(number): + humans.append(Human(choice(first_name), choice(last_name), rand(17, 41), choice(position), made_phone())) + + with open("human.data", "wb") as f: + pickle.dump(humans, f) + + +def made_phone(): # for random phone + phone = [rand(0, 10), rand(0, 10), rand(0, 10), "-", rand(0, 10), rand(0, 10), "-", rand(0, 10), rand(0, 10), rand(0, 10)] + return "".join([str(x) for x in phone]) + + +if __name__ == "__main__": + create_human(3) diff --git a/Practice/EvgeniySyatoykin/task_7.3 load.py b/Practice/EvgeniySyatoykin/task_7.3 load.py new file mode 100644 index 00000000..606bf03a --- /dev/null +++ b/Practice/EvgeniySyatoykin/task_7.3 load.py @@ -0,0 +1,17 @@ +import pickle +from libHuman import Human + + +def print_human(): + i = 0 + with open("human.data", "rb") as f: + humans = pickle.load(f) + for human in humans: + i += 1 + print(f"{i} human is: ") + print(human.first_name, human.last_name) + print(f"He is {human.age} years old. He is a {human.position}. Phone: {human.phone}\n") + + +if __name__ == "__main__": + print_human() diff --git a/Practice/EvgeniySyatoykin/tssk_5.1.py b/Practice/EvgeniySyatoykin/tssk_5.1.py new file mode 100644 index 00000000..11336a85 --- /dev/null +++ b/Practice/EvgeniySyatoykin/tssk_5.1.py @@ -0,0 +1,14 @@ +class Man: + + def __init__(self, name_of_man): + self.name = name_of_man + + @staticmethod # because we don't use attributes of the class + def solve_talk(): + print("I'm not ready yet") + + +if __name__ == "__main__": + man = Man("Isaak") + print(f"{man.name}:", end=" ") + man.solve_talk() diff --git a/Practice/EvgeniySyatoykin/tssk_5.2.py b/Practice/EvgeniySyatoykin/tssk_5.2.py new file mode 100644 index 00000000..552996bf --- /dev/null +++ b/Practice/EvgeniySyatoykin/tssk_5.2.py @@ -0,0 +1,30 @@ +import random +import time + + +class Man: + + def __init__(self, name_of_man): + self.name = name_of_man + + @staticmethod # because we don't use attributes of the class + def solve_talk(): + print("I'm not ready yet") + + +class Pupil(Man): + + def __init__(self, name_of_pupil): + super().__init__(name_of_pupil) + + @staticmethod + def solve_talk(): + print("I think...") + time.sleep(random.randint(3, 6)) + print("I'm not ready yet") + + +if __name__ == "__main__": + pupil = Pupil("Pupil") + print(f"{pupil.name}:", end=" ") + pupil.solve_talk() diff --git a/Practice/EvgeniySyatoykin/tssk_5.3.py b/Practice/EvgeniySyatoykin/tssk_5.3.py new file mode 100644 index 00000000..26df9db8 --- /dev/null +++ b/Practice/EvgeniySyatoykin/tssk_5.3.py @@ -0,0 +1,41 @@ +import os +import tempfile + + +class WrapStrToFile: + + def __init__(self): + self.file_path = tempfile.mktemp() + + @property # get file_content + def content(self): + try: + f = open(self.file_path, 'r') + except FileNotFoundError: + return "File doesn't exist" + else: + file_content = f.read() # if the file is open + f.close() # I don't write 'finally', because + # if the file is closed, we can not close it + return file_content + + @content.setter # set file_content + def content(self, value): + f = open(self.file_path, 'w') + f.write(value) + f.close() + + @content.deleter + def content(self): + os.remove(self.file_path) + + +if __name__ == "__main__": + wstf = WrapStrToFile() + print(f"File_path is '{wstf.file_path}'") + print(wstf.content) + wstf.content = "test str" + print(wstf.content) + wstf.content = "test2" + print(wstf.content) + del wstf.content diff --git a/Practice/EvgeniySyatoykin/tssk_6.3.py b/Practice/EvgeniySyatoykin/tssk_6.3.py new file mode 100644 index 00000000..36178c52 --- /dev/null +++ b/Practice/EvgeniySyatoykin/tssk_6.3.py @@ -0,0 +1,16 @@ +import time + + +class TimeManager: + def __enter__(self): + self._t = time.clock() # for process time + print(self._t) + print("Code start!") + + def __exit__(self, exc_type, exc_val, exc_tb): + print(f"Code execution took {time.clock()-self._t} sec") + + +if __name__ == "__main__": + with TimeManager(): + [x for x in range(10000000)] diff --git a/Practice/EvgeniySyatoykin/tssk_6.4.py b/Practice/EvgeniySyatoykin/tssk_6.4.py new file mode 100644 index 00000000..68a8d74a --- /dev/null +++ b/Practice/EvgeniySyatoykin/tssk_6.4.py @@ -0,0 +1,33 @@ +from itertools import chain +from itertools import filterfalse +from itertools import combinations + + +def itertools_usage(num: int, *args): + count = 0 # for check count of arrays + + for arg in args: + if type(arg) is list: # check type of arrays for choice of itertools methode + count += 1 + + if count == num: # count of lists == num => use chain() + return list(chain(*args)) + + elif type(num) is int and len(args) == 1 and type(args[0]) is list: # => use filterfalse() + return list(filterfalse(lambda x: len(x) < num, args[0])) + + elif type(num) is int and len(args) == 1 and type(args[0]) is str: # => use combinations() + return list(combinations(args[0], num)) + + return "Incorrect data!" + + +if __name__ == "__main__": + print(itertools_usage(3, [5, 4], [3], [2, 1, 0])) + print(itertools_usage(5, ["hello", "i", "write", "cook", "code", "embankment"])) + print(itertools_usage(4, "password")) + print(itertools_usage(4, 7, "incorrect data")) + try: + itertools_usage() + except TypeError as ex: + print(f"ERROR: {ex}") diff --git a/Practice/EvgeniySyatoykin/tssk_7.1.py b/Practice/EvgeniySyatoykin/tssk_7.1.py new file mode 100644 index 00000000..932f4491 --- /dev/null +++ b/Practice/EvgeniySyatoykin/tssk_7.1.py @@ -0,0 +1,23 @@ +import datetime + + +def working_days(first_data, second_data): + delta = second_data - first_data # - object timedelta + first_day = first_data.strftime("%A") # - day of week + + if first_day == "Saturday": + return (delta.days+1) - (delta.days+1)//7*2 - 2 # for start at Saturday ' - 2 day' + elif first_day == "Sunday": + return (delta.days + 1) - (delta.days + 1) // 7 * 2 - 1 # for start at Sunday ' - 1 day' + + return (delta.days+1) - (delta.days+1)//7*2 + + +if __name__ == "__main__": + print(working_days(datetime.datetime(2020, 8, 24), datetime.datetime(2020, 8, 30))) + print(working_days(datetime.datetime(2020, 8, 31), datetime.datetime(2020, 9, 13))) + print(working_days(datetime.datetime(2020, 9, 12), datetime.datetime(2020, 9, 16))) + print(working_days(datetime.datetime(2020, 9, 13), datetime.datetime(2020, 9, 16))) + print(working_days(datetime.datetime(2020, 9, 21), datetime.datetime(2020, 9, 23))) + print(f"We have {working_days(datetime.datetime.now(), datetime.datetime(2020, 12, 31))} working days in 2020") + diff --git a/Practice/EvgeniySyatoykin/tssk_7.2.py b/Practice/EvgeniySyatoykin/tssk_7.2.py new file mode 100644 index 00000000..09d27e6f --- /dev/null +++ b/Practice/EvgeniySyatoykin/tssk_7.2.py @@ -0,0 +1,15 @@ +import subprocess + + +def cat_file(file_name): + process = subprocess.Popen(["type", file_name], shell=True) + process.wait() + result = process.communicate() + + if process.returncode: + for line in result: + print(line) + + +if __name__ == "__main__": + cat_file("test.txt") # this file into the dir, for other file has to be full path diff --git a/Practice/EvgeniySyatoykin/tssk_pep8.py b/Practice/EvgeniySyatoykin/tssk_pep8.py new file mode 100644 index 00000000..3217a59f --- /dev/null +++ b/Practice/EvgeniySyatoykin/tssk_pep8.py @@ -0,0 +1,74 @@ +import sys +import os +import hashlib +import ast +import argparse +from time import * # this is not the best import option, we don't know what exactly is being imported + # "from time import time" or "import time" and use with name's library + + +class shuffler: # have to be "class Shuffler" + + def __init__(self): + self.map = {} + + def rename(self, dirname, output): # have to be "dir_name" + mp3s = [] + # line № 18-25 move right 4 spaces, because rename() has it + for root, directories, files in os.walk(dirname): # have to be "dir_name" + for file in files: + if file[-3:] == '.mp3': # have to be "if file[-4:]", because '.mp3'.len()=4 + mp3s.append([root, file]) # after this line add empty line + for path, mp3 in mp3s: + hashname = self.generateName() + '.mp3' # have to be "hash_name" + self.map[hashname] = mp3 + os.rename(path + '/' + mp3), path + '/' + hashname)) # after this line add empty line and delete ')' ')' + + f = open(output, 'r') # may be 'a' for f.write() + f.write(str(self.map)) # we can not write , because 'r' - only reading. + + def restore(self, dirname, restore_path): # have to be "dir_name" + with open(filename, '+') as f: # have to be "file_name" + self.map = ast.literal_eval(f.read()) + mp3s = [] + # line № 35-41 move right 4 spaces, because restore() has it + for root, directories, files in os.walk(dirname): + for file in files: + if file[-3:] == '.mp3': # have to be "if file[-4:]", because '.mp3'.len()=4 + mp3s.append({root, file}) # after this line add empty line + for path, hashname in mp3s: + os.rename(path + '/' + hashname, path + '/' + self.map[hashname])) # delete ')' + os.remove(restore_path) + + def generateName(self, seed=time()): # have to be "generate_name" + return hashlib.md5(str(seed)).hexdigest() + + +def parse_arguments(): + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='subcommand help') # have to be "sub_command" + rename_parser = subparsers.add_parser('rename', help='rename help') + rename_parser.add_argument('dirname') # have to be "dir_name" + rename_parser.add_argument('-o', '--output', help='path to a file where restore map is stored') + restore_parser = subparsers.add_parser('restore', help="command_a help") + restore_parser.add_argument('dirname') # have to be "dir_name" + restore_parser.add_argument('restore_map') + args = parser.parse_args() + return args + + +def main(): + args = parse_arguments() + Shuffler = shuffler() # have to be "shuffler=Shuffler()" and use the object + if args.subcommand == 'rename': + if args.output: + Shuffler.rename(args.dirname, 'restore.info') # use "shuffler.rename(args.dir_name, 'restore_info')" + else: + Shuffler.rename(args.dirname, args.output) # use "shuffler. ..." and add empty line after this line + elif args.subcommand == 'restore': + Shuffler.restore(args.dirname, args.restore_map) # use "shuffler. ..." + else: + sys.exit() + + +main() # after this line add empty line \ No newline at end of file