diff --git a/TEMA6/report.md b/TEMA6/report.md new file mode 100644 index 0000000..e946d34 --- /dev/null +++ b/TEMA6/report.md @@ -0,0 +1,270 @@ +# Отчёт по теме 6. Ввод-вывод данных и операции с файлами + +Ефремов Станислав, А-02-23 + +## 1. Начало работы + +Создание текстового файла `report.md` + +## 2. Вывод данных на экран дисплея + +**2.1. Вывод в командной строке** +```python +stroka='Автоматизированная система управления' +stroka +'Автоматизированная система управления' +``` + +**2.2. Вывод с использованием функции print** +```python +stroka='Автоматизированная система управления' +stroka +'Автоматизированная система управления' +fff=234.5;gg='Значение температуры = ' +print(gg,fff, sep="/") #sep делит переменные на вывод указанным знаком(вместо пробела) +Значение температуры = /234.5 +print(gg, fff,sep='/',end='***'); print('____') +Значение температуры = /234.5***____ + +print(""" Здесь может выводиться +большой текст, +занимающий несколько строк""") + Здесь может выводиться +большой текст, +занимающий несколько строк +print("Здесь может выводиться", + "большой текст,", + "занимающий несколько строк") +Здесь может выводиться большой текст, занимающий несколько строк +``` + +**2.3. Вывод с использованием метода write объекта sys.stdout** +```python +import sys +sys.stdout.write('Функция write') #это файловый объект, который представляет стандартный вывод программы; функция write выводит количесто символов +Функция write13 +sys.stdout.write('Функция write\n') +Функция write +14 #количество символов увеличилось на +1, так как /n - это тоже отдельный символ +``` + +## 3. Ввод данных с клавиатуры +```python +psw=input('Введите пароль:') +Введите пароль:1234 +psw;type(psw) +'1234' + + +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. Функции для работы с путем к файлу** +```python +import os +os.getcwd() #функция показывает, какой рабочий каталог установлен в текущий момент времени(cwd = current working directory) +'C:\\Users\\adamb\\AppData\\Local\\Programs\\Python\\Python313' +Efremov = os.getcwd();print(Efremov) +C:\Users\adamb\AppData\Local\Programs\Python\Python313 + +os.chdir('C:\\Program Files (x86)\\учёха 3 курс\\pythonsky') +os.getcwd() +'C:\\Program Files (x86)\\учёха 3 курс\\pythonsky' + +os.mkdir('C:\\Program Files (x86)\\учёха 3 курс\\pythonsky\\dizainer') #создание новой директории +os.rmdir("C:\\Users\\Ilya\\Desktop\\mkdir") #удаляет пустую директорию. Если в директории есть файлы или другие папки - возникает ошибка +os.listdir("C:\\Users\\adamb\\Desktop") #возвращает список имён всех файлов и папок в указанной директории +['123.docx', '123.py', 'desktop.ini', 'KYRSACH', 'lr3.docx', 'N1R', 'nir', 'Oracle VM VirtualBox.lnk', 'stat', 'SXEM', 'Windowed Mode', 'ИАД ЛР-1.docx', 'ЛР-2 ТАУ.docx', 'ОТЧЕТ ЛР 1.docx', 'сети_2-0-0-k-g.docx', 'унитаз', 'учёха'] +import os.path +os.path.isdir('C:\\Program Files (x86)\\учёха 3 курс\\pythonsky') #проверяет, является ли указанный путь директорией, возвращает True, если путь существует и является директорией +True + + +os.path.abspath("report.md") #получение пути доступа к указанному файлу +'C:\\Program Files (x86)\\учёха 3 курс\\pythonsky\\report.md' +drkt = os.path.dirname(fil);drkt #функция os.path.dirname(fil) возвращает директорию (папку) из указанного пути, убирая последний компонент (обычно имя файла) +'C:\\Program Files (x86)\\учёха 3 курс\\pythonsky' +os.path.basename(Efremov) #возвращает последний компонент пути - обычно это имя файла или конечной папки +'Python313' +os.path.split(Efremov) #разделяет путь на две части: директорию и имя файла/папки. Возвращает кортеж +('C:\\Users\\adamb\\AppData\\Local\\Programs\\Python', 'Python313') +os.path.exists(Efremov) #проверяет существование пути +True +os.path.exists('C:\\Program Files (x86)\\учёха 3 курс\\pythonsky\\Minecraft 1.5.2') +False +fil = 'C:/Program Files (x86)/учёха 3 курс/pythonsky/fil1.txt' +os.path.isfile(fil) #проверяет наличие файла в рабочем каталоге +True #является файлом +fil = 'C:/Program Files (x86)/учёха 3 курс/pythonsky' +os.path.isfile(fil) +False #не существует или является директорией + +``` + +**4.3. Открытие файла для записи или чтения данных – функция open.** +```python +os.chdir('C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA6') + +fp=open(file='zapis1.txt',mode='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'] +fp1=open('zapis2.bin',mode='wb+') +``` + +**4.4. Закрытие файла** +```python +fp.close();fp1.close() +``` + +**4.5. Запись информации в файл с помощью метода write** +```python +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() + +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.6. Первый способ чтения информации из текстового файла** +```python +fp = open('zapis3.txt') #в режиме чтения +for stroka in fp: + stroka=stroka.rstrip('\n') #даляет все символы \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'] + +sps_int = [] +for chislo in sps1: + sps_int.append(int(chislo)) + +sps_int +[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] +``` + +**4.7. Чтение информации из файла с помощью метода read** +```python +fp = open('zapis3.txt') +stroka1 = fp.read(12); stroka1 #число показывает количество читаемых символов в txt или количество бит в бит файле +'[1, 2, 3, 4]' +stroka2 = fp.read() +stroka2 +'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n' +fp.close() +``` + +**4.8. Чтение информации с помощью методов readline и readlines** +```python +fp = open('zapis3.txt', 'r') +fp.readline() #функция читает одну строку +'[1, 2, 3, 4]\n' +fp.close() + +fp = open('zapis3.txt', 'r') +fp.readlines() #функция читает все строки +['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n'] +fp.close() +``` + +**4.9. Ввод-вывод объектов с использованием функций из модуля pickle** +```python +import pickle #это модуль в Python для сериализации и десериализации объектов. Он преобразует объекты Python в поток байтов (сериализация) и обратно (десериализация) +mnoz1={'pen','book','pen','iPhone','table','book'} #если подать на вывод, будет только 'book', 'iPhone', 'table', 'pen' +fp = open('zapis6.mnz','wb') +pickle.dump(mnoz1, fp) #функция dump принимает объект и сериализует в поток байтов +fp.close() + +fp = open('zapis6.mnz', 'rb') +mnoz2 = pickle.load(fp); mnoz2 #метод чтения объекта из бинарного файла +{'pen', 'iPhone', 'book', 'table'} #содержимое совпадает, но в разном порядке +fp.close() + +fp = open('zapis7.2ob', 'wb') +pickle.dump(mnoz1, fp) +sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]] +pickle.dump(sps3,fp) +fp.close() +fp = open('zapis7.2ob', 'rb') +obj1 = pickle.load(fp); obj1 #читает первый +{'pen', 'iPhone', 'book', 'table'} +obj2 = pickle.load(fp); obj2 #читает второй +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +sps3 +[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]] +fp.close() +``` + +## 5. Перенаправление потоков ввода и вывода данных +```python +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 +``` \ No newline at end of file