diff --git a/.idea/PythonCourse.iml b/.idea/PythonCourse.iml
new file mode 100644
index 00000000..f14d577e
--- /dev/null
+++ b/.idea/PythonCourse.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 00000000..105ce2da
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 00000000..d1e22ecb
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 00000000..8537650d
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 00000000..94a25f7f
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 00000000..07c971df
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1599842116082
+
+
+ 1599842116082
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Practice/.idea/vcs.xml b/Practice/.idea/vcs.xml
new file mode 100644
index 00000000..6c0b8635
--- /dev/null
+++ b/Practice/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Practice/.idea/workspace.xml b/Practice/.idea/workspace.xml
new file mode 100644
index 00000000..06f43f55
--- /dev/null
+++ b/Practice/.idea/workspace.xml
@@ -0,0 +1,163 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1599746110743
+
+
+ 1599746110743
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
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/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/task_2.1.py b/Practice/EvgeniySyatoykin/task_2.1.py
new file mode 100644
index 00000000..135b6f54
--- /dev/null
+++ b/Practice/EvgeniySyatoykin/task_2.1.py
@@ -0,0 +1,7 @@
+def fun(a, b):
+
+ if (a > b):
+ print(f"max number={a}")
+ else:
+ print(f"max number{b}")
+
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
diff --git a/Tasks/.idea/Tasks.iml b/Tasks/.idea/Tasks.iml
new file mode 100644
index 00000000..8b8c3954
--- /dev/null
+++ b/Tasks/.idea/Tasks.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tasks/.idea/inspectionProfiles/Project_Default.xml b/Tasks/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 00000000..e0b928ab
--- /dev/null
+++ b/Tasks/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tasks/.idea/inspectionProfiles/profiles_settings.xml b/Tasks/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 00000000..105ce2da
--- /dev/null
+++ b/Tasks/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tasks/.idea/misc.xml b/Tasks/.idea/misc.xml
new file mode 100644
index 00000000..d1e22ecb
--- /dev/null
+++ b/Tasks/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Tasks/.idea/modules.xml b/Tasks/.idea/modules.xml
new file mode 100644
index 00000000..76370ec9
--- /dev/null
+++ b/Tasks/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tasks/.idea/vcs.xml b/Tasks/.idea/vcs.xml
new file mode 100644
index 00000000..6c0b8635
--- /dev/null
+++ b/Tasks/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Tasks/.idea/workspace.xml b/Tasks/.idea/workspace.xml
new file mode 100644
index 00000000..b357554f
--- /dev/null
+++ b/Tasks/.idea/workspace.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1603647092243
+
+
+ 1603647092243
+
+
+
+
+
+
+
+
+
\ No newline at end of file