Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- class Link():
- def __init__(self, link): # Создание объекта Link
- if isinstance(link, str): # из строки
- self.__url = link
- elif isinstance(link, Link): # из другого объекта класса Link
- self.__url = link.__url
- else:
- raise TypeError("Argument is not a link") # Иначе кинуть исключение
- @property
- def url(self): # Описание метода как свойство класса
- return self.__url # Возвращается адрес ссылки
- class Saver():
- def __init__(self, parent_path):
- self.__parent_path = parent_path # Описание директории, куда будет сохраняться файл
- def save(self, data, name):
- self.__result = True # Переменная, показывающая результат сохранения файла
- self.__mkdir(name) # Создание папки parent_path, если она не существует
- self.__save(data) # Сохранение файла в parent_path
- return self.__result
- def __mkdir(self, name):
- try:
- if not os.path.exists(self.__parent_path): # Если parent_path не существует, создать
- os.makedirs(self.__parent_path)
- self.__path = os.path.join(self.__parent_path, name) # Прописать полное имя файла в свойство __path
- except (IOError, TypeError): # Если нет доступа к папке
- self.__result = False # Вернуть отрицательный результат
- def __save(self, data):
- if self.__result: # Если ошибок при создании папки не возникло
- try:
- with open(self.__path, mode="wb") as f1:
- f1.write(data) # сохранить файл в parent_path
- except IOError: # При ошибке сохранения
- self.__result = False # Вернуть отрицательный результат
- if __name__ == "__main__":
- svr = Saver("Y:\\") # Создание объекта Saver в корне диска Y
- write_data = b"Test string"
- svr.save(write_data, "kek.txt") # Попробовать сохранить бинарные данные в файл
- with open("Y:\\kek.txt", "rb") as check:
- check_data = check.read()
- assert write_data == check_data # Проверить, что содержимое сохраненного файла совпадает с исходным
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement