diff --git a/TEMA6/report.md b/TEMA6/report.md index 983824a..5d3b856 100644 --- a/TEMA6/report.md +++ b/TEMA6/report.md @@ -26,33 +26,45 @@ >>>fff=234.5;gg='Значение температуры = ' >>>print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции Значение температуры = 234.5 + +По умолчанию выводимые объекты разделяются одним пробелом. Если нужен другой разделитель его можно указать в отдельном аргументе sep: + >>>print(gg, fff, sep="\n") Значение температуры = 234.5 + +После вывода автоматически осуществляется переход на другую строку. Если курсор надо оставить в той же строке, то следует использовать еще один аргумент: + >>>print(gg, fff,sep='\n',end='***'); print('____') Значение температуры = 234.5***____ + +После end= надо указать какими символами должна закончиться выводимая строка или указать пустую строку. Если в какой-то момент требуется просто перейти на новую строку, можно использовать следующее обращение к функции: + >>>print() - + +Оператор вывода может располагаться на нескольких строках с использованием тройных кавычек: >>>print(""" Здесь может выводиться большой текст, - занимающий несколько строк""") #В этом варианте текст выводится в три отдельные строки как и при вводе команды, благодаря троиным кавычкам. + занимающий несколько строк""") #В этом варианте текст выводится в три отдельные строки как и при вводе команды, благодаря тройным кавычкам. Здесь может выводиться большой текст, занимающий несколько строк >>>print("Здесь может выводиться", - "большой текст,", - "занимающий несколько строк") #В данном случае текст выводится подрят в одну строку. + "большой текст,", + "занимающий несколько строк") #В данном случае текст выводится подрят в одну строку. Здесь может выводиться большой текст, занимающий несколько строк +Разница в двух случаях состоит в том, что в первом случае тройные кавычки воспроизводят текст ровно так, как он был введен. Во втором случае три выводимых объекта-строки перечислены через запятую и выведены как три объекта, разделённые пробелом. + # 2.3 Изучение вывода данных с помощью функции write -Был испортирован модуль sys, и использована функция write, которая записывает и выводит текст, а так же возвращается количество байтов, записанных в строку. +Был импортирован модуль sys, и использована функция write, которая записывает и выводит текст, а так же возвращается количество байтов, записанных в строку. >>> import sys >>> sys.stdout.write('Функция write') @@ -67,15 +79,7 @@ Так же был создан цикл, который просит пользователя ввести значение до тех пор, пока оно не будет удовлетворять определенному интервалу, а потом выводит это значение на дисплей. -Также с помощью функции eval Была создана команда, благодаря которой выражение, введенное пользователен с консоли исполняется, и выдается результат расчета. - - >>> import sys - >>> sys.stdout.write('Функция write') - Функция write13 - >>> sys.stdout.write('Функция write\n') - Функция write - 14 - +Также с помощью функции eval Была создана команда, благодаря которой выражение, введенное пользователем с консоли исполняется, и выдается результат расчета. >>> psw=input('Введите пароль:') Введите пароль:398fhg @@ -84,6 +88,7 @@ >>> type(psw) +input() всегда возвращает строку. Если нужна не строка, то input надо поместить внутрь функции, изменяющей тип данных. >>> while True: ... znach=float(input('Задайте коэф.усиления = ')) @@ -105,6 +110,8 @@ введите выражение для расчета = math.log10(23/(1+math.exp(-3.24))) 1.34504378689765 +Введенная строка преобразуется в исполнительные инструкции с помощью eval(), далее они выполняются и результат выводится на экран. Строка имеет тип, соответствующий результату вычислений. В данном случае - float. + # 4 Изучение различных способов чтения данных из файла и записи в файл Были изучены и применены разные способы чтения и записи данных. @@ -145,20 +152,31 @@ path.isdir - возвращает true, если папка является с >>> os.path.isdir("new_folder") False +Функция преобразования пути, переданного в качестве аргумента, в абсолютный путь - os.path.abspath(). Абсолютный путь — это полный путь к файлу или каталогу, начиная от корневого каталога системы, а не относительный путь (который зависит от текущего рабочего каталога). + >>> fil=os.path.abspath("report.txt") >>> fil 'C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6\\report.txt' + +Функции отделения из абсолютного пути только каталога/только имени файла - dirname/basename: + >>> drkt=os.path.dirname(fil) >>> drkt 'C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6' >>> name = os.path.basename(fil) >>> name 'report.txt' + +Функция разделения на кортеж из пути и из имени файла - split: + >>> head, tail = os.path.split(fil) >>> head 'C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6' >>> tail 'report.txt' + +Функция проверки существования пути, заданного в символьной строке - exists: + >>> os.path.exists(g) True >>> os.path.exists('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA7') @@ -166,6 +184,13 @@ path.isdir - возвращает true, если папка является с >>> os.path.exists('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA11') False +Функция проверки существования файла - isfile: + + >>> os.path.isfile('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6\\report.txt') # Такой файл есть + True + >>> os.path.isfile('C:\\Users\\Дмитрий\\OneDrive\\Рабочий стол\\Goloshchapov\\python-labs\\TEMA6\\figure_1.png") # Такого файла нет + False + # 4.2 Изучение обобщенного процесса работы с файлами Было определено, что для обмена данными с файлами необходимо: @@ -187,6 +212,8 @@ path.isdir - возвращает true, если папка является с >>> type(fp) +fp – это файловый объект. Он сохраняет ссылку на открываемый файл и позволяет в дальнейшем ссылаться на файл, не указывая путь и имя открытого файла. + >>> dir(fp) ['_CHUNK_SIZE', '__class__', '__del__', '__delattr__', '__dict__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__next__', '__reduce__', @@ -194,6 +221,10 @@ path.isdir - возвращает true, если папка является с 'close', 'closed', 'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', 'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines'] +Если требуются другие операции с открываемым файлом, то для второго аргумента «mode=…» могут быть заданы следующие значения: w – запись с созданием нового файла или перезапись существующего файла, w+ - чтение и запись/перезапись файла, r – только чтение (это значение - по умолчанию), r+ - чтение и/или запись в существующий файл, a – запись в конец существующего файла или, если его нет, запись с созданием файла, a+ - то же, что и в «a», но с возможностью чтения из файла. + +Создаваемые и читаемые файлы могут быть бинарными или символьными. При открытии бинарного файла к указанным выше буквам в аргументе-цели надо добавить символ «b»: + >>> fp1=open(drkt+'\\zapis2.bin',mode='wb+') # 4.4 Изучение закрытия файла @@ -219,6 +250,8 @@ path.isdir - возвращает true, если папка является с 16 >>> fp2.close() +Метод выполняет действия по записи данных в файл, но возвращает количество записанных символов. + ![](Ris3.png) Далее был создан список из трех списков и с помощью цикла for все элементы списка были вписаны в файл в одну строку. @@ -282,14 +315,15 @@ path.isdir - возвращает true, если папка является с [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] >>> sps1 ['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12'] - >>> sps2=[] - >>> for i in sps1: - ... sps2.append(int(i)) - ... - ... + +Здесь, перед занесением строки в список с помощью метода rstrip, из неё удаляется символ конца строки (если не задавать аргументов, он удалит любые пробелы (пробел, табуляция, символы новой строки и т.п.) с конца строки.), а с помощью метода replace – скобки. Видно, что полученный список отличается от исходного sps типом данных, а также не убраны некоторые пробелы. Исправим это: + + >>> sps2 = [int(i.strip()) for i in sps1] >>> sps2 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +Это list comprehension, который у каждого элемента sps1 убирает лишние пробелы с обеих сторон (в этом отличие rstrip от strip). Затем полученная строка конвертируется в число. + # 4.7 Изучение способа чтения данных из файла с помощью функции read Был открыт текстовый файл и с помощью функции read из него сначала было прочитано и отображено 12 символов, а потом прочитаны остальные символы с помощью функции read без указания аргумента.