# Отчёт по теме 6 Соловьёва Екатерина А-01-23 ## 1 Запуск интерактивной оболочки IDLE ```py import os os.chdir('C:\\Users\\Ekaterina\\OneDrive\\Desktop\\Solovyova\\python-labs\\TEMA6') ``` ## 2 вывод данных на экран дисплея ## 2.1 Вывод в командной строке ```py stroka='Автоматизированная система управления' stroka 'Автоматизированная система управления' ``` ## 2.2 Вывод с использованием функции print Вывод информации на экран. Можно использовать и в теле функции и в командной строке ```py fff=234.5;gg='Значение температуры = ' print(gg, fff) Значение температуры = 234.5 print(gg, fff,sep='/',end='***'); print('____') Значение температуры = /234.5***____ print() print(""" Здесь может выводиться большой текст, занимающий несколько строк""") Здесь может выводиться большой текст, занимающий несколько строк print("Здесь может выводиться", "большой текст,", "занимающий несколько строк") Здесь может выводиться большой текст, занимающий несколько строк ``` * Тройные кавычки сохраняют структуру многострочного текста ## 2.3 Вывод с использованием метода write объекта sys.stdout ```py import sys sys.stdout.write('Функция write') Функция write13 sys.stdout.write('Функция write\n') Функция write 14 ``` ## 2 Ввод данных с клавиатуры ```py Введите пароль:1234 print(psw) 1234 type(psw) while True: znach=float(input('Задайте коэф.усиления = ')) if znach<17.5 or znach>23.8: print('Ошибка!') else: break Задайте коэф.усиления = 15.4 Ошибка! Задайте коэф.усиления = 21.6 print(znach) 21.6 import math print(eval(input('введите выражение для расчета = '))) введите выражение для расчета = math.log10(23/(1+math.exp(-3.24))) 1.34504378689765 ``` ## 4 Ввод-вывод при работе с файлами ## 4.1 Функции для работы с путем к файлу ```py import os os.chdir('C:\\Users\\Ekaterina\\OneDrive\\Desktop\\Solovyova\\python-labs\\TEMA6') solovyova=os.getcwd()#показывает какой рабочий каталог установлен в текущий момент времени print(solovyova) C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6 os.mkdir('a')#cоздает новую директорию os.listdir()#возвращает список имён всех файлов и папок в указанной директории ['.gitkeep', 'a', 'report.md', 'task.md'] os.path.isdir('a')#проверяет, является ли указанный путь директорией, возвращает True, если путь существует и является директорией True os.rmdir('a')#удаляет директорию os.listdir() ['.gitkeep', 'report.md', 'task.md'] fil=os.path.abspath("oplata.dbf") print(fil) C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6\oplata.dbf fil2=os.path.abspath("report.md") print(fil2) C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6\report.md drkt=os.path.dirname(fil) #функция os.path.dirname(fil) возвращает директорию (папку) из указанного пути, убирая последний компонент (обычно имя файла) print(drkt) C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6 os.path.basename(fil) 'oplata.dbf' os.path.split(fil) ('C:\\Users\\Ekaterina\\OneDrive\\Desktop\\Solovyova\\python-labs\\TEMA6', 'oplata.dbf') os.path.exists("report.md") True os.path.isfile('TEMA6') False os.path.isfile(fil)#проверяет наличие файла в рабочем каталоге True os.path.isfile(os.path.dirname(fil)+'fil1.txt')#проверяет, что по указанному пути существует файл False ``` ## 4.2. Общая схема работы с файлом Для обмена данными с файлом необходимо выполнить следующие операции: * Открытие файла с указанием его имени и цели (чтение, запись, добавление данных); * Выполнение одной или нескольких операций обмена данными с файлом; * Закрытие файла. ## 4.3. Открытие файла для записи или чтения данных – функция open. ```py fp=open('zapis1.txt','w') 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'] ``` Для второго аргумента «mode=…» могут быть заданы следующие значения: * w – запись с созданием нового файла или перезапись существующего файла, * w+ - чтение и запись/перезапись файла, * r – только чтение (это значение - по умолчанию), * r+ - чтение и/или запись в существующий файл, * a – запись в конец существующего файла или, если его нет, запись с созданием файла, * a+ - то же, что и в «a», но с возможностью чтения из файла. В зависимости от значения этого аргумента тип создаваемой файловой переменной может быть разным. При открытии бинарного файла к указанным выше буквам в аргументе-цели надо добавить сим-вол «b». ```py fp1=open(drkt+'\\zapis2.bin',mode='wb+') type(fp1) ``` ## 4.4. Закрытие файла. ```py fp.close();fp1.close() ``` ## 4.5 Запись информации в файл с помощью метода write ```py sps = list(range(1,13)) 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() ``` Содержимое файла приведено ниже ```txt [1, 2, 3, 4] [5, 6, 7, 8] [9, 10, 11, 12] ``` Попытка 1 ```py 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) fp3.close() ``` Содержимое текстового файла: ```txt Иванов И. 1Петров П. 2Сидоров С. 3 ``` Попытка 2 ```py gh = open('zapis5.txt','w') for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n') gh.close() ``` Содержимое текстового файла: ```txt Иванов И. 1 Петров П. 2 Сидоров С. 3 ``` ## 4.6 Первый способ чтения информации из текстового файла ```py 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() print(sps1) ['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12'] print(sps) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] ``` ## 4.7 Чтение информации из файла с помощью метода read ```py fp = open('zapis3.txt') stroka1 = fp.read(12) stroka2 = fp.read() fp.close() print(stroka1) [1, 2, 3, 4] print(stroka2) [5, 6, 7, 8] [9, 10, 11, 12] ``` ## 4.8 Чтение информации с помощью методов readline и readlines ```py fp = open('zapis3.txt', 'r') line1 = fp.readline() # читает 1ую строку line2 = fp.readline() # читает 2ую строку line3 = fp.readline() # читает 3ую строку print("readline():") print("Строка 1:", repr(line1)) print("Строка 2:", repr(line2)) print("Строка 3:", repr(line3)) fp.close() readline(): Строка 1: '[1, 2, 3, 4]\n' Строка 2: '[5, 6, 7, 8]\n' Строка 3: '[9, 10, 11, 12]\n' fp = open('zapis3.txt', 'r') lines = fp.readlines() # читает все строки в список print("readlines():", lines) fp.close() readlines(): ['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n'] ``` ## 4.9 Ввод-вывод объектов с использованием функций из модуля pickle ```py import pickle mnoz1={'pen','book','pen','iPhone','table','book'} fp = open('zapis6.mnz','wb') pickle.dump(mnoz1,fp) fp.close() ``` ```txt Вывод: 耄锣 鐨谆楐桯湥钌մ慢汥钌Ͱ敮钌Ѣ潯殔逮 ``` ```py fp=open('zapis6.mnz','rb') mnoz2=pickle.load(fp) fp.close() mnoz2 {'book', 'iPhone', 'pen', 'table'} mnoz1 == mnoz2 True ``` Множество в Python автоматически удаляет все дубликаты и не сохраняет порядок элементов, поэтому mnoz2 не совпадает с тем, что было задано при создании mnoz1 ```py 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() print(obj1,obj2) {'book', 'iPhone', 'pen', 'table'} [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] print(mnoz1,sps3) {'iPhone', 'table', 'pen', 'book'} [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] ``` ## 5 Перенаправление потоков ввода и вывода данных ```py import sys #это импорт встроенного модуля sys, который предоставляет доступ к системным параметрам и функциям, связанным с интерпретатором Python vr_out = sys.stdout #текущий поток вывода fc = open('Stroka.txt', 'w') #файл вывода sys.stdout = fc #перенаправление стандартного потока вывода в файл print('запись строки в файл') sys.stdout = vr_out #восстановление текущего потока print('запись строки на экран') запись строки на экран fc.close() 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 ```