# Отчет по теме 6

Хатюхин Евгений, А-02-23

# 1 Запустил IDLE
# 2 Изучил вывод данных на экран дисплея
## 2.1 Изучил эхо-вывод
```py
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
```
## 2.2 Изучение вывода данных с помощью печати
```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
```py
import sys
sys.stdout.write('Функция write')
Функция write13
sys.stdout.write('Функция write\n')
Функция write
14
```
# 3 Изучение ввода данных с клавиатуры
```py
psw=input('Введите пароль:')
Введите пароль:12345
psw
'12345'
type(psw)
<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 Изучение модуля os для работы с путями к файлам

mkdir - создает папку в рабочем каталоге (в приложенном фото видно, что в каталоге появилась папка);  
![[TEMA6/1.png]]
rmdir - удаляет из каталога пустую папку; 
![[TEMA6/2.png]]
listdir - возвращает список имен файлов/папок в указанном каталоге (или если аргумент не указан, то в текущем каталоге); 
path.isdir - возвращает true, если папка является существующей в каталоге.
```py
import os
os.getcwd()
'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313'
a = str(os.getcwd())
a
'C:\\Users\\Евгений\\AppData\\Local\\Programs\\Python\\Python313'
os.chdir('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6')
os.getcwd()
'C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6'
os.mkdir("new1")
os.rmdir("new1")
os.listdir()
['.gitkeep', 'task.md']
os.path.isdir("new1")
False
os.path.isdir("task")
False
os.path.isdir("tema")
False
os.path.isdir("report")
False
os.path.isdir("abc")
True
fil=os.path.abspath("report.md")
fil
'C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6\\report.md'
drkt=os.path.dirname(fil)
drkt
'C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6'
name = os.path.basename(fil)
name
'report.md'
head, tail = os.path.split(fil)
head
'C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6'
tail
'report.md'
os.path.exists('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA6')
True
os.path.exists('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA8')
True
os.path.exists('C:\\Users\\Евгений\\Desktop\\python-labs\\TEMA20')
False
os.path.isfile(fil)
False
os.path.isfile(head+tail)
False
os.path.isfile(head+'task.md')
False
fil=os.path.abspath("task.md")
os.path.isfile(fil)
True
```
## 4.2 Изучение обобщенного процесса работы с файлами
Для обмена данными с файлом необходимо выполнить следующие операции:
- Открытие файла с указанием его имени и цели (чтение, запись, добавление данных);
- Выполнение одной или нескольких операций обмена данными с файлом;
- Закрытие файла.
## 4.3 Изучение функции open для открытия файлов с разной целью
```py
fp=open(file=drkt+'\\zapis1.txt',mode='w')
fp=open(drkt+'\\zapis1.txt','w')
fp=open('zapis1.txt','w')
type(fp)
<class '_io.TextIOWrapper'>
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')
fp2.write(str(sps[:4])+'\n')
13
fp2.write(str(sps[4:8])+'\n')
13
fp2.write(str(sps[8:])+'\n')
16
fp2.close()
```
![[4.png]]
```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()
```
![[5.png]]
```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
gh.close()
```
![[6.png]]
![[7.png]]
## 4.6 Изучение одного из способов чтения данных из файла с помощью цикла for
```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']
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
```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 Изучение чтения данных из файла по строкам
```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
```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', 'book', 'iPhone', 'table'}
mnoz1 == mnoz2
True
```
![[8.png]]
```py
fp=open('zapis7.2ob','wb')
pickle.dump(mnoz1,fp)
pickle.dump(sps3,fp)
sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
pickle.dump(sps3,fp)
fp.close()
fp=open('zapis7.2ob','rb')
obj1=pickle.load(fp)
obj2=pickle.load(fp)
fp.close()
obj1
{'pen', 'book', 'iPhone', 'table'}
obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
```
# 5 Перенаправление потоков ввода и вывода данных
```py
import sys
vr_out=sys.stdout
fc=open('Stroka.txt','w')
sys.stdout=fc
print('запись строки в файл')
sys.stdout=vr_out
print('запись строки на экран')
запись строки на экран
fc.close()
```
![[9.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
```