Pavel 3 недель назад
Родитель 2a401c7288
Сommit 337418c07c

Двоичные данные
TEMA6/1.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 36 KiB

Двоичные данные
TEMA6/2.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 40 KiB

Двоичные данные
TEMA6/3.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 5.0 KiB

Двоичные данные
TEMA6/31.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.7 KiB

Двоичные данные
TEMA6/4.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 7.5 KiB

Двоичные данные
TEMA6/5.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 7.8 KiB

Двоичные данные
TEMA6/6.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.8 KiB

Двоичные данные
TEMA6/7.png

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 6.5 KiB

@ -0,0 +1 @@
запись строки в файл

@ -0,0 +1,459 @@
# Отчет по теме 6
Анисенков Павел, А-01-23
## 1 Запуск интерактивной оболочки IDLE
Была запущена интерактивная оболочка IDLE.
## 2 Вывод данных на экран дисплея
Были изучены и применены различные способы вывода данных на экран.
## 2.1 Изучение эхо-вывода
```py
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
```
## 2.2 Изучение вывода данных с помощью печати
Была изучена функция print для вывода текста. Текст был выведен в одну строку, далее в две строки с использованием экранированных последовательностей, далее был выведен текст с дописанным в конце текстом, используя аргумент end. И также был выведен текст в три строки, используя троиные кавычки.
```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 Вывод данных с помощью функции write
Был испортирован модуль sys, и использована функция write, которая записывает и выводит текст, а так же возвращается количество байтов, записанных в строку. В первом вариаенте нет перехода на новую строку перед 13
```
>>>import sys
>>>sys.stdout.write('Функция write')
Функция write13
>>>sys.stdout.write('Функция write\n')
Функция write
14
```
## 3 Ввод данных с клавиатуры
С помощью функции input был произведен вывод текста, введенного с клавиатуры. Так же был создан цикл, который просит пользователя ввести значение до тех пор, пока оно не будет удовлетворять определенному интервалу, а потом выводит это значение на дисплей. Также с помощью функции eval Была создана команда, благодаря которой выражение, введенное пользователен с консоли исполняется, и выдается результат расчета.
```py
>>>psw=input('Введите пароль:')
Введите пароль:52spb
>>>psw
'52spb'
>>>type(psw)
<class 'str'> #функция input всегда возвращает строку
>>>while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 11.1
Ошибка!
Задайте коэф.усиления = 22.8
>>>import math
>>>print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
## 4 Ввод вывод при работе с файлами
Были изучены и применены разные способы чтения и записи данных.
## 4.1 Изучение модуля os для работы с путями к файлам
```py
import os
os.getcwd()
'C:\\Users\\Professional\\AppData\\Local\\Programs\\Python\\Python313'
Anisenkovv=os.getcwd()
os.chdir("C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6")
Anisenkovv = os.getcwd()
Anisenkovv
'C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6'
os.mkdir("MIBOMBO")
os.rmdir("MIBOMBO")
os.listdir("C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6")
['.gitkeep', '1.png', '2.png', 'report.md', 'маамама.md']
import os.path
os.path.isdir("C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6")
True
```
Был просмотрен текущий рабочий каталог, занесен в переменную Anisenkovv. Были самостоятельно изучены и применены методы из модуля os и подмодуля os.path:
mkdir - создает папку в рабочем каталоге (в приложенном фото видно, что в каталоге появилвсь папка);
![](1.png)
rmdir - удаляет из каталога пустую папку;
![](2.png)
listdir - возвращает список имен файлов/папок в указанном каталоге (или если аргумент не указан, то в текущем каталоге);
path.isdir - возвращает true, если папка является существующей в каталоге.
Далее была создана переменная, содержащая строку - путь в файлу report и имя данного файла. Используя эту переменную, с помощью функций модуля os была создана строка содержащая только путь, потом только имя, а потом применена функция, которая разделяет в одну переменную - путь, в другую - имя файла. Далее было проверено существование определенного пути, и существование определенного файла с указаном каталоге.
```py
import os
os.getcwd()
'C:\\Users\\Professional\\AppData\\Local\\Programs\\Python\\Python313'
Anisenkovv=os.getcwd()
os.chdir("C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6")
Anisenkovv = os.getcwd()
Anisenkovv
'C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6'
os.mkdir("MIBOMBO")
os.rmdir("MIBOMBO")
os.listdir("C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6")
['.gitkeep', '1.png', '2.png', 'report.md', 'маамама.md']
import os.path
os.path.isdir("C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6")
True
>>>fil=os.path.abspath("report.md")
>>>fil
fil=os.path.abspath("report.md")
fil
'C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6\\report.md'
>>>drkt=os.path.dirname(fil) # путь к файлу report.md
>>>drkt
'C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6'
>>>name = os.path.basename(fil) # имя файла
>>>name
'report.md'
>>>head, tail = os.path.split(fil)
>>>head
'C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6'
>>>tail
'report.md'
>>>os.path.exists ("C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6")#существует ли путь
True
>>>os.path.exists("C:\\Users\\Professional\\Desktop\\python-labs\\TEMA10")
False
>>>os.path.isfile(fil) #наличие файла с известным расположением
True
```
## 4.2 Изучение обобщенного процесса работы с файлами
Было определено, что для обмена данными с файлами необходимо:
• Открыть файла с указанием его имени и цели;
• Выполнить операции обмена данными с файлом;
• Закрыть файл.
## 4.3 Функция open для открытия файлов с разной целью
Была применена команда open с различным написанием аргументов, создан файловый обьект. Выведен тип и список атрибутов этого обьекта.
w – запись с созданием нового файла или перезапись существующего файла,
w+ - чтение и запись/перезапись файла,
r – только чтение (это значение - по умолчанию),
r+ - чтение и/или запись в существующий файл,
a – запись в конец существующего файла или, если его нет, запись с созданием файла,
a+ - то же, что и в «a», но с возможностью чтения из файла.
```py
help(open)
Help on built-in function open in module _io:
open(
file,
mode='r',
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None
)
Open file and return a stream. Raise OSError upon failure.
...
>>>fp=open(file=drkt+'\\zapis1.txt',mode='w') #сохраняет ссылку на открываемый файл и позволяет в дальнейшем ссылаться на файл, не указы-вая путь и имя открытого файла
>>>fp=open(drkt+'\\zapis1.txt','w')
>>>fp=open('zapis1.txt','w')
>>>type(fp)
<class '_io.TextIOWrapper'> #файловый объект для текстовых данных в Python, который имеет ряд атрибутов и методов
>>>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(drkt+'\\zapis2.bin',mode='wb+') # бинарный файл
```
## 4.4 Закрытие файла
```py
>>>fp.close()
```
## 4.5 Изучение функции write для записи данных в текст
Был создан список из 12 элементов и поочередно в файл записаны числа из списка в три строки.
```py
>>>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()
```
![](31.png)
Далее был создан список из трех списков и с помощью цикла for все элементы списка были вписаны в файл в одну строку.
```py
>>>sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
>>>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()
```
![](4.png)
Далее с помощью цикла for три списка из общего списка были вписаны в файл поочередно в три строки. Запись цикла была сжата в одну строку, и проверено, что при написании той же инструкции в одну строку, содержимое файла не изменяется, относительно предыдущего метода с этими же инструкциями.
```py
>>>gh=open('zapis5.txt','w')
>>>for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
>>>gh.close()
>>>gh=open('zapis6.txt','w')
>>>for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
```
![](5.png)
## 4.6 Изучение одного из способов чтения данных из файла с помощью цикла for
С помощью open был открыт файл для чтения, и из его символов был сконструирован список, состоящий из символов. После символы в списке были преобразованы в числа, и список стал идентичен тому, который создавался ранее и записывался в файл.
```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()
>>>sps1
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12'] #все элементы как строки
#чтобы список, полученный при чтении из файла, совпал с исходным.
sps1 = []
fp = open('zapis3.txt')
for stroke in fp:
sps1 = eval(stroke) # Преобразует строку обратно в список
fp.close()
>>>sps2=[]
>>>for i in sps1:
sps2.append(int(i))
>>>sps2
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
```
## 4.7 Изучение способа чтения данных из файла с помощью функции read
Был открыт текстовый файл и с помощью функции read из него сначала было прочитано и отображено 12 символов, а потом прочитаны остальные символы с помощью функции 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'
```
## 4.8 Изучение чтения данных из файла по строкам
Самостоятельно были изучены и применены функции: readline - которая читает одну строку, начиная с указателя текущей позиции, и функция readlines, которая по такому же принципу читает все строки и возвращает их в виде списка.
```py
>>>fp=open('zapis3.txt')
>>>s1 = fp.readline()
>>>s2=fp.readline()
>>>s1
'[1, 2, 3, 4]\n'
>>>s2
'[5, 6, 7, 8]\n'
>>>fp.close()
>>>fp=open('zapis3.txt')
>>>s3 = fp.readlines()
>>>s3
['[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()
>>>mnoz2 #Результат не такой как при вводе множества mnoz1, так как множество не имеет повторений и порядка элементов, поэтому автоматически множество обьединило повторяющиеся слова.
{'pen', 'iPhone', 'book', 'table'}
mnoz1 == mnoz2
True
```
![Просмотр бинарного файла](6.png)
Также в файл было записано два обьекта и прочитано поочередно с помощью load.
```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) #Первое обращение к load читает первый объект
>>>obj2=pickle.load(fp) #Второе – читает второй
>>>fp.close()
>>>obj1
{'pen', 'iPhone', 'book', 'table'}
>>>obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
```
## 5
Был создан текстовый файл, куда с помощью модуля sys и методы stdout был перенаправлен поток вывода, и в нем был напечатан текст. Далее поток вывода был перенаправлен обратно и проведена проверка с помощью print.
```py
>>>import sys
>>>vr_out=sys.stdout #Запоминаем текущий поток вывода
>>>fc=open('Stroka.txt','w') #Откроем файл вывода
>>>sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл
>>>print('запись строки в файл') #Вывод теперь будет не на экран, а в файл
>>>sys.stdout=vr_out #Восстановление текущего потока
>>>print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился
запись строки на экран
>>>fc.close()
```
![Просмотр содержимого файла stroka.txt](7.png)
Также был перенаправлен ввод на файл, и реализован цикл, в котором считывается текст из файла и печатается на экран.
```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()
>>>sys.stdin=tmp_in #Не забыть вернуть стандартное назначение для потока ввода
```
## 6 Завершение работы в IDLE
Был завершен сеанс в среде IDLE.

@ -0,0 +1,77 @@
# Общее контрольное задание по теме 6
Анисенков Павел, А-01-23
## Задание
Придумайте инструкции и запишите их в файл с расширением .py , которые выполняют следующие операции:
• Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
• Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
• Записывается кортеж в бинарный файл.
• Записывается в этот же файл список и закрывается файл.
• Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
• Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
• Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами.
## Решение
```py
>>>import random
>>>num = list(range(1, 126, 1))
>>>num
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125]
>>>kor = ()
>>>for i in num:
kor = kor + (random.randint(6, 56),)
>>>kor
(27, 38, 7, 18, 35, 11, 41, 35, 20, 24, 43, 7, 48, 17, 26, 39, 35, 17, 54, 22, 31, 11, 8, 38, 7, 34, 22, 14, 36, 7, 15, 23, 48, 34, 31, 18, 39, 55, 18, 11, 32, 18, 51, 34, 41, 31, 8, 11, 28, 25, 42, 56, 10, 52, 6, 9, 15, 53, 36, 27, 48, 6, 53, 50, 51, 49, 11, 11, 16, 36, 39, 39, 18, 52, 14, 44, 13, 27, 26, 27, 23, 13, 36, 24, 34, 27, 21, 6, 37, 29, 53, 13, 54, 22, 26, 46, 36, 22, 48, 11, 24, 28, 9, 23, 36, 45, 6, 55, 9, 31, 22, 42, 50, 55, 46, 7, 55, 17, 54, 32, 39, 41, 14, 49, 22)
>>>len(kor)
125
>>>str_kor = tuple(map(str, kor))
>>>str_kor
('27', '38', '7', '18', '35', '11', '41', '35', '20', '24', '43', '7', '48', '17', '26', '39', '35', '17', '54', '22', '31', '11', '8', '38', '7', '34', '22', '14', '36', '7', '15', '23', '48', '34', '31', '18', '39', '55', '18', '11', '32', '18', '51', '34', '41', '31', '8', '11', '28', '25', '42', '56', '10', '52', '6', '9', '15', '53', '36', '27', '48', '6', '53', '50', '51', '49', '11', '11', '16', '36', '39', '39', '18', '52', '14', '44', '13', '27', '26', '27', '23', '13', '36', '24', '34', '27', '21', '6', '37', '29', '53', '13', '54', '22', '26', '46', '36', '22', '48', '11', '24', '28', '9', '23', '36', '45', '6', '55', '9', '31', '22', '42', '50', '55', '46', '7', '55', '17', '54', '32', '39', '41', '14', '49', '22')
>>>L_fam = ["Anisenkov1", "Anisenkov2", "Anisenkov3", "Anisenkov4", "Anisenkov5"]
>>>import os
>>>os.chdir("C:\\Users\\Professional\\Desktop\\python-labs\\TEMA6")
>>>f = open('bin.mnz', 'wb')
>>>import pickle
>>>pickle.dump(str_kor, f)
>>>pickle.dump(L_fam, f)
>>>f.close()
>>>f = open('bin.mnz', 'rb')
>>>obj1 = pickle.load(f)
>>>obj2_spis = pickle.load(f)
>>>obj1
('27', '38', '7', '18', '35', '11', '41', '35', '20', '24', '43', '7', '48', '17', '26', '39', '35', '17', '54', '22', '31', '11', '8', '38', '7', '34', '22', '14', '36', '7', '15', '23', '48', '34', '31', '18', '39', '55', '18', '11', '32', '18', '51', '34', '41', '31', '8', '11', '28', '25', '42', '56', '10', '52', '6', '9', '15', '53', '36', '27', '48', '6', '53', '50', '51', '49', '11', '11', '16', '36', '39', '39', '18', '52', '14', '44', '13', '27', '26', '27', '23', '13', '36', '24', '34', '27', '21', '6', '37', '29', '53', '13', '54', '22', '26', '46', '36', '22', '48', '11', '24', '28', '9', '23', '36', '45', '6', '55', '9', '31', '22', '42', '50', '55', '46', '7', '55', '17', '54', '32', '39', '41', '14', '49', '22')
>>>obj2_spis
['Anisenkov1', 'Anisenkov2', 'Anisenkov3', 'Anisenkov4', 'Anisenkov5']
>>>if obj1 == str_kor:
print("обьекты кортежа совпадают")
else: print("обьекты кортежа не совпадают")
обьекты кортежа совпадают
>>>if obj2_spis == L_fam:
print("обьекты списка совпадают")
else: print("обьекты списка не совпадают")
обьекты списка совпадают
>>>List = []
>>>for i in range(0, 125, 5):
List.append(list(str_kor[i:i + 5]))
>>>List
[['27', '38', '7', '18', '35'], ['11', '41', '35', '20', '24'], ['43', '7', '48', '17', '26'], ['39', '35', '17', '54', '22'], ['31', '11', '8', '38', '7'], ['34', '22', '14', '36', '7'], ['15', '23', '48', '34', '31'], ['18', '39', '55', '18', '11'], ['32', '18', '51', '34', '41'], ['31', '8', '11', '28', '25'], ['42', '56', '10', '52', '6'], ['9', '15', '53', '36', '27'], ['48', '6', '53', '50', '51'], ['49', '11', '11', '16', '36'], ['39', '39', '18', '52', '14'], ['44', '13', '27', '26', '27'], ['23', '13', '36', '24', '34'], ['27', '21', '6', '37', '29'], ['53', '13', '54', '22', '26'], ['46', '36', '22', '48', '11'], ['24', '28', '9', '23', '36'], ['45', '6', '55', '9', '31'], ['22', '42', '50', '55', '46'], ['7', '55', '17', '54', '32'], ['39', '41', '14', '49', '22']]
>>>for i in range(25):
list_name = f"list{i + 1}"
code = f"{list_name} = List[{i}]"
exec(code)
>>>print(list1)
>>>print(list2)
['27', '38', '7', '18', '35']
['11', '41', '35', '20', '24']
```

@ -0,0 +1 @@
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

@ -0,0 +1 @@
Иванов И. 1Петров П. 2Сидоров С. 3

Двоичные данные
TEMA6/zapis6.mnz

Двоичный файл не отображается.

Двоичные данные
TEMA6/zapis7.2ob

Двоичный файл не отображается.

@ -0,0 +1,252 @@
# Отчёт по теме 6. Ввод-вывод данных и операции с файлами
Выполнил Огарков Илья, А-03-23
## 1. Начало работы
Создание текстового файла `report.md`
## 2. Вывод данных на экран дисплея
**2.1. Вывод в командной строке**
```python
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
```
**2.2. Вывод с использованием функции print**
```python
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
fff=234.5;gg='Значение температуры = '
print(gg,fff, 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'
<class 'str'>
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:\\Program Files\\Python311'
Ogarkov = os.getcwd();print(Ogarkov)
C:\Program Files\Python311
os.chdir('d:\\users\\tmp5\\') \\изменение расположения рабочего каталога
os.mkdir("C:\\Users\\Ilya\\Desktop\\mkdir") \\создание новой директории
os.rmdir("C:\\Users\\Ilya\\Desktop\\mkdir") \\удаляет пустую директорию. Если в директории есть файлы или другие папки - возникает ошибка
os.listdir("C:\\Users\\Ilya\\Desktop") \\возвращает список имён всех файлов и папок в указанной директории
['1.py', 'Adobe Photoshop 2025.lnk', 'AIDA64.lnk', 'bar', 'Cisco Secure Client.lnk', 'desktop.ini', 'Google Chrome.lnk', 'Labs', 'MSI Afterburner.lnk', 'Nexus', 'OBS Studio.lnk', 'python-labs', 'qBittorrent.lnk', 'Remote Desktop Connection.lnk', 'Telegram.lnk', 'Visual Studio Code.lnk', 'Wub', 'Yandex.lnk', 'ВАЖНОЕ_СЕРВЕР.txt', 'Документы огарков А.С', 'Золотой фонд цитат.txt', 'КМ1ОгарковИльяА-03-23.docx', 'Новая папка', 'Покер', 'Расписание.txt', 'РКН ФИКС', 'ТАУ', 'Фото']
import os.path
os.path.isdir("C:\\Users\\Ilya\\Desktop\\ТАУ") \\проверяет, является ли указанный путь директорией, возвращает True, если путь существует и является директорией
True
os.path.abspath("LICENSE.txt")
'C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python\\Python313\\LICENSE.txt'
drkt = os.path.dirname(fil);drkt \\функция os.path.dirname(fil) возвращает директорию (папку) из указанного пути, убирая последний компонент (обычно имя файла)
'C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python\\Python313'
os.path.basename(Ogarkov) \\возвращает последний компонент пути - обычно это имя файла или конечной папки
'Python313'
os.path.split(Ogarkov) \\разделяет путь на две части: директорию и имя файла/папки. Возвращает кортеж (head, tail)
('C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python', 'Python313')
os.path.exists(Ogarkov) \\проверяет существование пути
True
os.path.exists("C:\\Users\\Ilya\\AppData\\Local\\Programs\\Python\\mkdir")
os.path.isfile(fil) \\проверяет наличие файла в рабочем каталоге
True
```
**4.3. Открытие файла для записи или чтения данных – функция open.**
```python
os.chdir('C:\\Users\\Ilya\\Desktop\\python-labs\\TEMA6')
fp=open(file='zapis1.txt',mode='w')
type(fp);dir(fp)
<class '_io.TextIOWrapper'>
['_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()
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')
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']
```
**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'}
fp = open('zapis6.mnz','wb')
pickle.dump(mnoz1, fp) \\функция dump принимает объект и сериализует в поток байтов
fp.close()
fp = open('zapis6.mnz', 'rb')
mnoz2 = pickle.load(fp); mnoz2 \\load – метод чтения объекта из бинарного файла
{'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
```
Загрузка…
Отмена
Сохранить