From 78e7773bf0d2af5c7258730755e0c27945e632d4 Mon Sep 17 00:00:00 2001 From: KhodiukMR Date: Sun, 2 Nov 2025 19:26:04 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D1=82=D1=87=D1=91=D1=82=20=D0=BA=20=D0=A2=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=206=20=D0=B8=20=D0=BD=D0=B5=D0=BE=D0=B1=D1=85?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D0=BC=D1=8B=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB?= =?UTF-8?q?=20=D0=BA=20=D0=BD=D0=B5=D0=BC=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TEMA6/photo6.png | Bin 0 -> 11669 bytes TEMA6/report.md | 461 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 461 insertions(+) create mode 100644 TEMA6/photo6.png create mode 100644 TEMA6/report.md diff --git a/TEMA6/photo6.png b/TEMA6/photo6.png new file mode 100644 index 0000000000000000000000000000000000000000..04e70b1df5f12b396c6c98ff518112f71277b348 GIT binary patch literal 11669 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 XGpQe0m3qIKNWgVZ_)z)?JTCkPEx&3x literal 0 HcmV?d00001 diff --git a/TEMA6/report.md b/TEMA6/report.md new file mode 100644 index 0000000..39b23dc --- /dev/null +++ b/TEMA6/report.md @@ -0,0 +1,461 @@ +# Отчёт по Теме 6 +Ходюк Максим Романович А-01-23 +## Пункт 1 +Запустил стреду IDLE и выставил рабочий каталог: +``` +import os +os.chdir('D:\\POAS\\Hodyuk\\Tema6\\') +``` + +## Пункт 2 +### 2.1. Вывод в командной строке +``` +stroka='Автоматизированная система управления' +stroka +'Автоматизированная система управления' +``` +Данный способ вывода называется Эхо-выводом + +### 2.2 Функция print +Пример использования +``` +fff=234.5;gg='Значение температуры = ' +print(gg, fff) +Значение температуры = 234.5 +``` + +Можно изменить разделитель при выводе аргументом sep и символы, оканчивающие вывод с помощью аргумента end +``` +print(gg, fff, sep='/') +Значение температуры = /234.5 +print(gg, fff,sep='/',end='***'); print('____') +Значение температуры = /234.5***____ +print() +``` + +Оператор вывода может располагаться на нескольких строках: +``` +print(""" Здесь может выводиться +большой текст, +занимающий несколько строк""") + + Здесь может выводиться +большой текст, +занимающий несколько строк +print("Здесь может выводиться", + "большой текст,", + "занимающий несколько строк") +Здесь может выводиться большой текст, занимающий несколько строк +``` + +### 2.3 Функция write +Импортирую модуль sys и применяю функцию write +``` +import sys +sys.stdout.write('Функция write') +Функция write13 +sys.stdout.write('Функция write\n') +Функция write +14 +``` + +## Пункт 3. Функция input (ввод с клавиатуры) + +``` +psw=input('Введите пароль:') +Введите пароль: 12345 +psw +' 12345' +``` + +Пример 1. Ввод с контролем значения +``` +while True: + znach=float(input('Задайте коэф.усиления = ')) + if znach<17.5 or znach>23.8: + print('Ошибка!') + else: + break + +Задайте коэф.усиления = 20 +while True: + znach=float(input('Задайте коэф.усиления = ')) + if znach<17.5 or znach>23.8: + print('Ошибка!') + else: + break + + +Задайте коэф.усиления = 3 +Ошибка! +Задайте коэф.усиления = 5 +Ошибка! +Задайте коэф.усиления = 19 +``` + +Пример 2. Ввод и обработка выражения +``` +import math +print(eval(input('введите выражение для расчета = '))) +введите выражение для расчета = math.log10(23/(1+math.exp(-3.24))) +1.34504378689765 +``` + +## Пункт 4. +### 4.1 Функции для работы с путём к файлу + +Модуль os был импортирован ранее, а также выставлен рабочий каталог, поэтому сразу перейду к использованию других функций в этом модуле +Использование функции для создания и удаления каталога: +``` +os.mkdir('gg') +``` +На рис.1 представлен скриншот созданного каталога gg +![Рис 1.](photo1.png) + +``` +os.rmdir('gg') +``` + +На рис. 2 представлен скриншот после выполнения функций удаления каталога +![Рис 2.](photo2.png) + +Использовал функцию для выводе всех файлов, находящихся в выбранном каталоге(при пустых аргументах выдаёт содержимое рабочего каталога) +``` +os.listdir() +['photo1.png', 'photo2.png', 'report.md'] +``` + +Использования функции isdir из модуля os.path (для проверки наличия подкаталога в каталоге) +``` +help(os.path.isdir) +Help on built-in function _path_isdir in module nt: + +_path_isdir(s) + Return true if the pathname refers to an existing directory. + +os.mkdir('test_isdir') +os.path.isdir('test_isdir') +True +``` + +Пусть в рабочем каталоге находится файл OPLATA.DBF. С помощью функции os.path.abspath можно получить символьную строку, содержащую имя файла вместе с полным путем доступа к нему: + +``` +fil=os.path.abspath("oplata.dbf") +fil +'D:\\POAS\\Hodyuk\\Tema6\\oplata.dbf' + +fil=os.path.abspath("photo1.png") +fil +'D:\\POAS\\Hodyuk\\Tema6\\photo1.png' +``` + +Выделил путь доступа к файлу из строки с помощью следующей функции: +``` +drkt=os.path.dirname(fil) +drkt +'D:\\POAS\\Hodyuk\\Tema6' +``` +Далее выделил имя файла из этой строки +``` +bn=os.path.basename(fil) +bn +'photo1.png' +``` + +Самостоятельно применил функцию os.path.split +``` +help(os.path.split) +Help on function split in module ntpath: + +split(p) + Split a pathname. + + Return tuple (head, tail) where tail is everything after the final slash. + Either part may be empty. + +os.path.split(fil) +('D:\\POAS\\Hodyuk\\Tema6', 'photo1.png') +``` +Функция возвращает кортёж из пути доступа к файлу и его имени, отделив их друг от друга + +С помощью функции os.path.exists можно проверить существует ли путь, заданный в символьной строке – аргументе функции. +``` +os.path.exists(drkt) +True +os.path.exists('D:test\\wrong\\way\\') +False +``` + +Проверил наличие файла с известным расположением(если как аргумент задать только имя файла, функция будет искать файл в рабочем каталоге) +``` +os.path.isfile(fil) +True +os.path.isfile(os.path.dirname(fil)+'fil1.txt') +False +``` + +### 4.2 Общая схема работы с файлом +Для обмена данными с файлом необходимо выполнить следующие операции: + +• Открытие файла с указанием его имени и цели (чтение, запись, добавление данных); + +• Выполнение одной или нескольких операций обмена данными с файлом; + +• Закрытие файла. + +### 4.3 Открытие файла для записи или чтения - функция open +Открыл файл zapis1.txt для записи данных +``` +fp=open(file=drkt+'\\zapis1.txt',mode='w') +``` +Проверил наличие открываемого файла: +``` +os.path.isfile(drkt+'\\zapis1.txt') +True +``` +Вообще говоря, аргументы функции с их именами могут располагаться в любом порядке. Если имя файла располагается на месте первого аргумента, а цель использования – на втором, то имена аргументов можно не указывать и просто вводить +``` +fp=open(drkt+'\\zapis1.txt','w') +``` +С помощью функции closed проверил, открыт ли файл(соответственно, если функция возвращает True - файл закрыт, а если False - то открыт). Далее буду использовать этот способ для проверки открытия файла + +``` +fp.closed +False +``` +Если путь в переменной drkt совпадает с рабочим каталогом, то его можно опустить, оставив только имя открываемого файла: +``` +fp=open('zapis1.txt','w') +fp.closed +False +``` +Отобразил тип и список атрибутов объекта fp +``` +type(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__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', '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'] +``` + +Создаваемые и читаемые файлы могут быть бинарными или символьными. При открытии бинарного файла к указанным выше буквам в аргументе-цели надо добавить символ «b». +``` +fp1=open(drkt+'\\zapis2.bin',mode='wb+') +fp1.closed +False +``` + +### 4.4 Закрытие файла +``` +fp.close() +fp.closed +True +``` + +### 4.5 Запись в файл с помощью функции write +Рассмотрел пример создания списка и записи его в файл +``` +sps=list(range(1,13)) +sps +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +fp2=open('zapis3.txt','w') +fp2.write(str(sps[:4])+'\n') +13 +fp2.write(str(sps[4:8])+'\n') +13 +fp2.write(str(sps[8:])+'\n') +16 +fp2.close() +``` +Содержимое файла [zapis3.txt](zapis3.txt) представлено на рис.3 +![Рис.3](photo3.png) + +Следующий пример + +sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]] +fp3=open('zapis4.txt','w') +for i in range(len(sps3)): + stroka4=sps3[i][0]+' '+str(sps3[i][1]) + fp3.write(stroka4) + +11 +11 +12 +fp3.close() + +Содержимое файла [zapis4.txt](zapis4.txt) представлено на рис.4 +![Рис.4](photo4.png) + +Легко заметить, что информация записана в файл не очень удачно. + +Пробую записать информацию в файл другим способом +``` +gh=open('zapis5.txt','w') +for r in sps3: + gh.write(r[0]+' '+str(r[1])+'\n') + +12 +12 +13 +gh.close() +``` + +Содержимое файла [zapis5.txt](zapis5.txt) представлено на рис.5 +![Рис.5](photo5.png) + +Представил цикл в одной строке: +``` +gh=open('zapis5.txt','w') +for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n') + +12 +12 +13 +gh.close() +``` +После выполнения цикла содержимое файла такое же, как было + + +### 4.6 Чтений информации из текстового файла: Способ Первый + +Прочитал информацию из созданного ранее файла zapis3.txt +``` +sps1=[] +fp=open('zapis3.txt') +for stroka in fp: + stroka=stroka.rstrip('\n') + stroka=stroka.replace('[','') + stroka=stroka.replace(']','') + sps1=sps1+stroka.split(',') + +fp.close() +sps1 +['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12'] +``` +Здесь, перед занесением строки в список с помощью метода rstrip, из неё удаляется символ конца строки, а с помощью метода replace – скобки. +Видно, что полученный список отличается от исходного sps, в первую очередь, типом данных +Преобразовать sps1 в sps можно, например, так: +``` +sps2 = [int(i.strip()) for i in sps1] +sps2 +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +``` + +### 4.7 Чтение с помощью метода read + +``` +fp=open('zapis3.txt') +stroka1=fp.read(12) +stroka2=fp.read() +fp.close() +stroka1 +'[1, 2, 3, 4]' +stroka2 +'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n' +``` + +### 4.8 Самостоятельно изучил чтение информации с помощью методов readline и readlines +``` +fp=open('zapis3.txt') +stroka3=fp.readline() +stroka3 +'[1, 2, 3, 4]\n' +stroka4=fp.readline() +stroka4 +'[5, 6, 7, 8]\n' +strokaAll=fp.readlines() +strokaAll +['[9, 10, 11, 12]\n'] +fp.close() +fp=open('zapis3.txt') +strokaAll=fp.readlines() +strokaAll +['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n'] +``` + +### 4.9 Ввод-вывод с помощью модуля pickle +Пример этого способа работы с файлами +``` +import pickle +mnoz1={'pen','book','pen','iPhone','table','book'} +fp=open('zapis6.mnz','wb') +fp.closed +False +pickle.dump(mnoz1,fp) +fp.close() +``` + +Теперь прочитаю из файла zapis6.mnz +``` +fp=open('zapis6.mnz','rb') +mnoz2=pickle.load(fp) +fp.close() +mnoz2 +{'book', 'pen', 'table', 'iPhone'} +mnoz1 == mnoz2 +True +``` +Как можно заметить, визуально файлы отличаются, но проверка на совпадение выдаёт результат True +mnoz2 не совпадает с тем, что было задано, потому что это множество. Оно исключает повторяющиеся элементы, оставляя только один, а еще не содержит конкретный порядок элементов. Но два множества равны, если у них равны все элементы и их одинаковое количество, вне зависимости от порядка, так что сравнение возвращает True. + +А теперь с использованием тех же функций запишите в файл, а затем прочитайте два объекта разных типов: то же множество mnoz1 и ранее созданный список sps3. +``` +fp=open('zapis7.2ob','wb') +pickle.dump(mnoz1,fp) +pickle.dump(sps3,fp) +fp.close() +fp=open('zapis7.2ob','rb') +obj1=pickle.load(fp) +obj2=pickle.load(fp) +fp.close() +obj1,obj2 +({'book', 'pen', 'table', 'iPhone'}, [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]) +obj1 == mnoz1 +True +obj2 == sps3 +True +``` +Убедился в совпадении прочитанных данных с введёнными + + +## Пункт 5. Перенаправление потоков ввода и вывода +Пример 1 +``` +vr_out=sys.stdoutmnoz1 +fc=open('Stroka.txt','w') +sys.stdout=fc +print('запись строки в файл') +sys.stdout=vr_out +print('запись строки на экран') +запись строки на экран +fc.close() +``` +В результате получаю файл [Stroka.txt](Stroka.txt) со следующим содержанием +![Рис.6](photo6.png) + +Точно также можно перенаправить поток ввода – sys.stdin – вместо клавиатуры – из файла. + +``` +tmp_in = sys.stdin +fd = open("Stroka.txt", "r") +sys.stdin = fd +sys.stdin +<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'> +while True: + try: + line = input () #Считываем из файла строку + print(line) # Отображаем считанное + except EOFError: + break + +запись строки в файл +fd.close() +``` + +Вернул стандартное назначение потора ввода +``` +sys.stdin=tmp_in +``` +## Пункт 6 +Закончил сеанс работы с IDLE +