# Отчет по теме 6 **Сарайкина Вера, А-02-23** ### 1.Начало работы, настройка текущего каталога ```py import os os.chdir('C:\Users\Yarik\Desktop\labi\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='/') Значение температуры = /234.5 print(gg, fff,sep='/',end='***'); print('____') Значение температуры = /234.5***____ print() print(""" Здесь может выводиться большой текст, занимающий несколько строк""") Здесь может выводиться большой текст, занимающий несколько строк print("Здесь может выводиться", "большой текст,", "занимающий несколько строк") Здесь может выводиться большой текст, занимающий несколько строк ``` #### 2.3 Стандартный поток вывода, модуль sys ```py import sys sys.stdout.write('Функция write') Функция write13 sys.stdout.write('Функция write\n') Функция write 14 help(sys.stdout.write) Help on method write in module idlelib.run: write(s) method of idlelib.run.StdOutputFile instance Write string s to stream. Return the number of characters written (which is always equal to the length of the string). ``` ### 3. Ввод c клавиатуры ```py psw=input('Введите пароль:') Введите пароль:555550 psw '555550' type(psw) while True: znach=float(input('Задайте коэф.усиления = ')) if znach<17.5 or znach>23.8: print('Ошибка!') else: break Задайте коэф.усиления = 15.4 Ошибка! Задайте коэф.усиления = 21.6 import math print(eval(input('введите выражение для расчета = '))) введите выражение для расчета = math.log10(23/(1+math.exp(-3.24))) 1.34504378689765 ``` ### 4.Ввод-вывод при работе с файлами #### 4.1 Функции для работы с путем к файлу - Настройка текущей директории ```py import os os.getcwd() '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6' Antonov = os.getcwd() print(Antonov) /Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6 os.getcwd() '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6' ``` - Пробую методы вложенного модуля path ```py os.listdir() ['.DS_Store', 'hm', 'report.md', '.gitkeep'] os.path.isdir('/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6') True os.path.isdir('python-labs/TEMA6') False os.path.abspath('report.md') '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6/report.md' file = os.path.abspath('report.md') drkt=os.path.dirname(file) drkt '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6' os.path.basename(file) 'report.md' os.path.split(file) ('/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6', 'report.md') os.path.exists(file) True os.path.exists(file+'eee') False ``` #### 4.3 Открытие/закрытие файла, функция open/close ```py help(open) fp=open(file=drkt+'//zapis1.txt',mode='w') drkt '/Users/dmitrijantonov/Desktop/POAC/python-labs/TEMA6' 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'] fp.close() ``` #### 4.4 Запись в файл функция write ```py sps=list(range(1,13)) fp2=open('zapis3.txt','w') fp2.write(str(sps[:4])+'\n');fp2.write(str(sps[4:8])+'\n');fp2.write(str(sps[8:])+'\n');fp2.close() 13 13 16 ``` [!Данные записанные в файл](fig1.png) - Запись списка списков ```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) 11 11 12 fp3.close() gh=open('zapis5.txt','w') for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n') 12 12 13 gh.close() ``` #### 4.5 Чтение информации из текстового файла. ```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'] ``` - Теперь элементы списков совпадают ```py for i in range(len(sps1)): sps1[i] = int(sps1[i]) sps1==sps True ``` #### 4.6 Чтение информации из файла с помощью метода read ```py 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' ``` - Изучение функции readline и readlines ```py fp=open('zapis3.txt');stroka1=fp.readline() stroka1 '[1, 2, 3, 4]\n' stroka2=fp.readline(3) stroka2 '[5,' fp.close() fp=open('zapis3.txt');stroka1=fp.readlines() stroka1 ['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n'] fp.close() ``` #### 4.9 Ввод-вывод объектов с использованием функций из модуля pickle ```py import pickle mnoz1={'pen','book','pen','iPhone','table','book'} fp=open('zapis6.mnz','wb') pickle.dump(mnoz1,fp) fp.close() fp=open('zapis6.mnz','rb') mnoz2=pickle.load(fp) fp.close() ``` - Проверка объектов на совпадение ```py mnoz2 == mnoz1 True ``` - Отличие от исходного в том, что сохранились только уникальные элементы ```py mnoz2 {'table', 'book', 'iPhone', 'pen'} mnoz1 {'table', 'book', 'iPhone', 'pen'} ``` - Запись/чтение нескольких объектов ```py sps3 [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] 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 ({'table', 'book', 'iPhone', 'pen'}, [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]) obj1==mnoz1; obj2==sps3 True True ``` ### 5. Перенаправление потоков ввода и вывода данных - Перенаправление вывода в файл ```py import sys vr_out=sys.stdout fc=open('Stroka.txt','w') sys.stdout=fc print('запись строки в файл') sys.stdout=vr_out print('запись строки на экран') запись строки на экран fc.close() ``` - Перенаправление вввода из файла ```py tmp_in = sys.stdin fd = open("Stroka.txt", "r") sys.stdin = fd while True: try: line = input () print(line) except EOFError: break запись строки в файл fd.close() sys.stdin=tmp_in ```