diff --git a/TEMA6/report6.md b/TEMA6/report6.md new file mode 100644 index 0000000..e94ebd7 --- /dev/null +++ b/TEMA6/report6.md @@ -0,0 +1,371 @@ +# Отчет по теме 6 +Ефимова Людмила, А-03-23 + +## 1. Запустила интерактивную оболочку и создала файл отчета + +## 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 +``` +После вывода автоматически осуществляется переход на другую строку. Если курсор надо +оставить в той же строке, то следует использовать еще один аргумент. +После end указано какими символами кончается строка +```py +print(gg, fff,sep='/',end='***'); print('____') +Значение температуры = /234.5***____ +``` +Оператор вывода может располагаться на нескольких строках с использованием +тройных кавычек +```py +print(""" Здесь может выводиться +большой текст, +занимающий несколько строк""") + Здесь может выводиться +большой текст, +занимающий несколько строк +print("Здесь может выводиться", + "большой текст,", + "занимающий несколько строк") +Здесь может выводиться большой текст, занимающий несколько строк +``` +### 2.3. Вывод с использованием метода write объекта sys.stdout. +stdout представляет собой +поток стандартного вывода – объект, в который программы выводят символьное представление данных. + +```py +import sys +sys.stdout.write('Функция write') +Функция write13 +sys.stdout.write('Функция write\n') # \n перенос на следующую строку +Функция write +14 +``` + +## 3. Ввод данных с клавиатуры + +```py +psw=input('Введите пароль:') +Введите пароль: 1234 +psw +' 1234' +type(psw) + +``` +Ввод с контролем значения +```py +while True: + znach=float(input('Задайте коэф.усиления = ')) + if znach<17.5 or znach>23.8: + print('Ошибка!') + else: + break + +Задайте коэф.усиления = 4 +Ошибка! +Задайте коэф.усиления = 20 +``` +Вывод и обработка выражения, подлежащего расчету + +```py +import math +print(eval(input('введите выражение для расчета = '))) +введите выражение для расчета = math.log10(23/(1+math.exp(-3.24))) +1.34504378689765 +``` +## 4. Ввод-вывод данных при работе с файлами +Работа с файлом требует указания источника данных - полного имени файла с путем доступа к его расположению. + +### 4.1. Функции для работы с путем к файлу +```py +os.getcwd () +'C:\\Users\\Людмила\\AppData\\Local\\Programs\\Python\\Python313' +way = os.getcwd() # сохранили путь в переменную +way +'C:\\Users\\Людмила\\AppData\\Local\\Programs\\Python\\Python313' +``` +Установили новый рабочий каталог +```py +os.chdir('H:\\study\\ПОАС') +os.getcwd () +'H:\\study\\ПОАС' +``` +В модуле os также есть функции, позволяющие удалять и создавать директории. + +```py +os.listdir() #Возвращает список имен файлов находящихся в рабочей директории +['New directory', 'report — копия.odt', 'report3.md', 'report4.md', 'report5.md', 'report6.txt', 'Ris1.png', 'Ris2.png', 'task.md', 'task3.md', 'task4.md', 'Методические указания по ПОАС.pdf', 'репозиторий', 'Тест по модулю 1 ПОАС.docx'] +os.path.isdir("New directory"); os.path.isdir("test333") # Проверка наличия директории в рабочем каталоге +True +False +os.rmdir('New directory') # Удаление директории +os.listdir() +['report — копия.odt', 'report3.md', 'report4.md', 'report5.md', 'report6.txt', 'Ris1.png', 'Ris2.png', 'task.md', 'task3.md', 'task4.md', 'Методические указания по ПОАС.pdf', 'репозиторий', 'Тест по модулю 1 ПОАС.docx'] +``` +Можно также получить путь к файлу + +```py +fil=os.path.abspath("report5.md") +fil +'H:\\study\\ПОАС\\report5.md' +drkt = os.path.dirname(fil) +drkt +'H:\\study\\ПОАС' +name = os.path.basename(fil) # Выделение имени файла +name +'report5.md' +directory, fileName = os.path.split(fil) # Разделяет путь к файлу на путь доступа к файлу и его имя (Возвращает кортеж из этих двух составляющих) +print(directory);print(fileName) +H:\study\ПОАС +report5.md +``` +Проверка указывает ли путь к нужному файлу + +```py +os.path.isfile(fil) # Проверка пути к файлу +True +os.path.isfile("test.txt") +False +``` +### 4.2. Общая схема работы с файлами + +Для обмена данными с файлом необходимо выполнить следующие операции: + Открытие файла с указанием его имени и цели (чтение, запись, добавление данных); + Выполнение одной или нескольких операций обмена данными с файлом; + Закрытие файла. + +### 4.3. Открытие файла для записи или чтения данных - функция open +При открытии файла необходимо указать имя файлы (с путем, если он не в рабочем каталоге) и цель работы с ним. +fp – это файловый объект, сохраняет ссылку на открываемый файл. + +w – запись с созданием нового файла или перезапись существующего файла, +w+ - чтение и запись/перезапись файла, +r – только чтение (это значение - по умолчанию), +r+ - чтение и/или запись в существующий файл, +a – запись в конец существующего файла или, если его нет, запись с созданием файла, +a+ - то же, что и в «a», но с возможностью чтения из файла. + +```py +fp=open(file=drkt+'\\zapis1.txt',mode='w') # открыли файл для записи данных +fp=open(drkt+'\\zapis1.txt','w') # имена аргументов можно опустить +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'] +``` +### 4.4. Закрытие файла +```py +fp.close() +``` + +### 4.5. Запись информации в файл +Можно записать информацию в файл с помощью метода write + +```py +sps=list(range(1,13)) +sps +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +fp2 = open("zapis3.txt", "w") # запись первых 4 значений и перенос строки +fp2.write(str(sps[:4])+'\n') +13 +fp2.write(str(sps[4:8])+'\n') +13 +fp2.write(str(sps[8:])+'\n') +16 +fp2.close() +``` +Содержимое файла +```py +[1, 2, 3, 4] +[5, 6, 7, 8] +[9, 10, 11, 12] +``` +Запись данных внутри цикла +```py +sps3 = [["Иванов И.", 1], ["Петров П.", 2], ["Сидоров С.", 3]] +for i in range(len(sps3)): + stroka4=sps3[i][0]+' '+str(sps3[i][1]) + fp3.write(stroka4) + +11 +11 +12 +fp3.close() +``` +Содержимое файла +```py +Иванов И. 1Петров П. 2Сидоров С. 3 +``` +Запишем иначе +```py +gh=open('zapis5.txt','w') +for r in sps3: + gh.write(r[0]+' '+str(r[1])+'\n') + +12 +12 +13 +for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n') # в одну строку +12 +12 +13 +``` +Содержимое файла +```py +Иванов И. 1 +Петров П. 2 +Сидоров С. 3 +``` + +### 4.6. Чтение информации из текстового файла внутри цикла. +Чтение данных из файла происходит последовательно, начиная с некоторого символа. В качестве примера прочитан ранее созданный файл zapis3.txt: +```py +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'] +``` +Сделаем чтобы элементы совпадали с исходными + +```py +for i in range(len(sps1)): + sps1[i] = int(sps1[i]) +sps1 +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +``` +### 4.7. Чтение информации с помощью метода read +Метод read, также как и write, относится к объекту - файловой переменной. + +```py +fp=open('zapis3.txt') +stroka1=fp.read(12) +stroka2=fp.read() +fp.close() +stroka2 +'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n' +stroka1 +'[1, 2, 3, 4]' +``` +### 4.8. Чтение информации с помощью методов readline и readlines + +```py +fp = open("zapis3.txt") +stroka1 = fp.readline() # Чтение первой строки файла +stroka2 = fp.readline() # Чтение второй строки файла +fp.close() +fp = open("zapis3.txt") +stroka3 = fp.readlines() # Чтение всех строк файла +fp.close() +stroka1 +'[1, 2, 3, 4]\n' +stroka2 +'[5, 6, 7, 8]\n' +stroka3 +['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n'] +``` +### 4.9. Ввод-вывод объектов с использованием функций из модуля pickle. +Для работы с бинарными файлами можно пользоваться функциями из модуля pickle. Примером этого может послужить запись объекта-множества в бинарный файл: +```py +import pickle +mnoz1={'pen','book','pen','iPhone','table','book'} #Объект типа «множество» +fp=open('zapis6.mnz','wb') # Бинарный файл – на запись +pickle.dump(mnoz1,fp) #dump – метод записи объекта в файл +fp.close() + +fp=open('zapis6.mnz','rb') +mnoz2=pickle.load(fp) #load – метод чтения объекта из бинарного файла +fp.close() +mnoz1 +{'iPhone', 'pen', 'book', 'table'} +mnoz2 +{'pen', 'table', 'book', 'iPhone'} +mnoz2 == mnoz1 +True +``` +Получение объекта из файла можно осуществить с помощью метода load: + +```py +fp = open("zapis6.mnz", "rb") +mnoz2 = pickle.load(fp) # Получение объекта из файла +fp.close() +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 +{'pen', 'table', 'book', 'iPhone'} +obj2 +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +``` +## 5. Перенаправление потоков ввода и вывода данных. +Потоки ввода-вывода можно перенаправлять, например в файл: + +```py +import sys +vr_out = sys.stdout # Сохранение текущего потока вывода +fc = open("Stroka.txt", "w") +sys.stdout = fc # Перезапись потока вывода с экрана на файл +print("Запись строки в файл") +fc.close() +sys.stdout = vr_out # Возвращение истинного значения потока вывода +print("Запись строки на экран") +Запись строки на экран +``` +Содержимое файла + +```py +Запись строки в файл +``` +Точно также можно перенаправить поток ввода – sys.stdin – вместо клавиатуры – из файла. + +```py +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() +``` +## 6. Завершила работу со средой + + + + + +