Исправление отчёта

main
KhodiukMR 1 месяц назад
Родитель 78e7773bf0
Сommit 91b41fea52

@ -1,461 +1,468 @@
# Отчёт по Теме 6 # Отчёт по Теме 6
Ходюк Максим Романович А-01-23 Ходюк Максим Романович А-01-23
## Пункт 1 ## Пункт 1
Запустил стреду IDLE и выставил рабочий каталог: Запустил стреду IDLE и выставил рабочий каталог:
``` ```
import os import os
os.chdir('D:\\POAS\\Hodyuk\\Tema6\\') os.chdir('D:\\POAS\\Hodyuk\\Tema6\\')
``` ```
## Пункт 2 ## Пункт 2
### 2.1. Вывод в командной строке ### 2.1. Вывод в командной строке
``` ```
stroka='Автоматизированная система управления' stroka='Автоматизированная система управления'
stroka stroka
'Автоматизированная система управления' 'Автоматизированная система управления'
``` ```
Данный способ вывода называется Эхо-выводом Данный способ вывода называется Эхо-выводом
### 2.2 Функция print ### 2.2 Функция print
Пример использования Пример использования
``` ```
fff=234.5;gg='Значение температуры = ' fff=234.5;gg='Значение температуры = '
print(gg, fff) print(gg, fff)
Значение температуры = 234.5 Значение температуры = 234.5
``` ```
Можно изменить разделитель при выводе аргументом sep и символы, оканчивающие вывод с помощью аргумента end Можно изменить разделитель при выводе аргументом sep и символы, оканчивающие вывод с помощью аргумента end
``` ```
print(gg, fff, sep='/') print(gg, fff, sep='/')
Значение температуры = /234.5 Значение температуры = /234.5
print(gg, fff,sep='/',end='***'); print('____') print(gg, fff,sep='/',end='***'); print('____')
Значение температуры = /234.5***____ Значение температуры = /234.5***____
print() print()
``` ```
Оператор вывода может располагаться на нескольких строках: Оператор вывода может располагаться на нескольких строках:
``` ```
print(""" Здесь может выводиться print(""" Здесь может выводиться
большой текст, большой текст,
занимающий несколько строк""") занимающий несколько строк""")
Здесь может выводиться Здесь может выводиться
большой текст, большой текст,
занимающий несколько строк занимающий несколько строк
print("Здесь может выводиться", print("Здесь может выводиться",
"большой текст,", "большой текст,",
"занимающий несколько строк") "занимающий несколько строк")
Здесь может выводиться большой текст, занимающий несколько строк Здесь может выводиться большой текст, занимающий несколько строк
``` ```
### 2.3 Функция write ### 2.3 Функция write
Импортирую модуль sys и применяю функцию write Импортирую модуль sys и применяю функцию write
``` ```
import sys import sys
sys.stdout.write('Функция write') sys.stdout.write('Функция write')
Функция write13 Функция write13
sys.stdout.write('Функция write\n') sys.stdout.write('Функция write\n')
Функция write Функция write
14 14
``` ```
## Пункт 3. Функция input (ввод с клавиатуры) ## Пункт 3. Функция input (ввод с клавиатуры)
``` ```
psw=input('Введите пароль:') psw=input('Введите пароль:')
Введите пароль: 12345 Введите пароль: 12345
psw psw
' 12345' ' 12345'
``` ```
Пример 1. Ввод с контролем значения Пример 1. Ввод с контролем значения
``` ```
while True: while True:
znach=float(input('Задайте коэф.усиления = ')) znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8: if znach<17.5 or znach>23.8:
print('Ошибка!') print('Ошибка!')
else: else:
break break
Задайте коэф.усиления = 20 Задайте коэф.усиления = 20
while True: while True:
znach=float(input('Задайте коэф.усиления = ')) znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8: if znach<17.5 or znach>23.8:
print('Ошибка!') print('Ошибка!')
else: else:
break break
Задайте коэф.усиления = 3 Задайте коэф.усиления = 3
Ошибка! Ошибка!
Задайте коэф.усиления = 5 Задайте коэф.усиления = 5
Ошибка! Ошибка!
Задайте коэф.усиления = 19 Задайте коэф.усиления = 19
``` ```
Пример 2. Ввод и обработка выражения Пример 2. Ввод и обработка выражения
``` ```
import math import math
print(eval(input('введите выражение для расчета = '))) print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24))) введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765 1.34504378689765
``` ```
## Пункт 4. ## Пункт 4.
### 4.1 Функции для работы с путём к файлу ### 4.1 Функции для работы с путём к файлу
Модуль os был импортирован ранее, а также выставлен рабочий каталог, поэтому сразу перейду к использованию других функций в этом модуле Модуль os был импортирован ранее, а также выставлен рабочий каталог, поэтому сразу перейду к использованию других функций в этом модуле
Использование функции для создания и удаления каталога: Использование функции для создания и удаления каталога:
``` ```
os.mkdir('gg') os.mkdir('gg')
``` ```
На рис.1 представлен скриншот созданного каталога gg На рис.1 представлен скриншот созданного каталога gg
![Рис 1.](photo1.png) Рис. 1:
![Рис 1.](photo1.png)
```
os.rmdir('gg') ```
``` os.rmdir('gg')
```
На рис. 2 представлен скриншот после выполнения функций удаления каталога
![Рис 2.](photo2.png) На рис. 2 представлен скриншот после выполнения функций удаления каталога
Использовал функцию для выводе всех файлов, находящихся в выбранном каталоге(при пустых аргументах выдаёт содержимое рабочего каталога) Рис. 2:
``` ![Рис 2.](photo2.png)
os.listdir()
['photo1.png', 'photo2.png', 'report.md'] Использовал функцию для выводе всех файлов, находящихся в выбранном каталоге(при пустых аргументах выдаёт содержимое рабочего каталога)
``` ```
os.listdir()
Использования функции isdir из модуля os.path (для проверки наличия подкаталога в каталоге) ['photo1.png', 'photo2.png', 'report.md']
``` ```
help(os.path.isdir)
Help on built-in function _path_isdir in module nt: Использования функции isdir из модуля os.path (для проверки наличия подкаталога в каталоге)
```
_path_isdir(s) help(os.path.isdir)
Return true if the pathname refers to an existing directory. Help on built-in function _path_isdir in module nt:
os.mkdir('test_isdir') _path_isdir(s)
os.path.isdir('test_isdir') Return true if the pathname refers to an existing directory.
True
``` os.mkdir('test_isdir')
os.path.isdir('test_isdir')
Пусть в рабочем каталоге находится файл OPLATA.DBF. С помощью функции os.path.abspath можно получить символьную строку, содержащую имя файла вместе с полным путем доступа к нему: True
```
```
fil=os.path.abspath("oplata.dbf") Пусть в рабочем каталоге находится файл OPLATA.DBF. С помощью функции os.path.abspath можно получить символьную строку, содержащую имя файла вместе с полным путем доступа к нему:
fil
'D:\\POAS\\Hodyuk\\Tema6\\oplata.dbf' ```
fil=os.path.abspath("oplata.dbf")
fil=os.path.abspath("photo1.png") fil
fil 'D:\\POAS\\Hodyuk\\Tema6\\oplata.dbf'
'D:\\POAS\\Hodyuk\\Tema6\\photo1.png'
``` fil=os.path.abspath("photo1.png")
fil
Выделил путь доступа к файлу из строки с помощью следующей функции: 'D:\\POAS\\Hodyuk\\Tema6\\photo1.png'
``` ```
drkt=os.path.dirname(fil)
drkt Выделил путь доступа к файлу из строки с помощью следующей функции:
'D:\\POAS\\Hodyuk\\Tema6' ```
``` drkt=os.path.dirname(fil)
Далее выделил имя файла из этой строки drkt
``` 'D:\\POAS\\Hodyuk\\Tema6'
bn=os.path.basename(fil) ```
bn Далее выделил имя файла из этой строки
'photo1.png' ```
``` bn=os.path.basename(fil)
bn
Самостоятельно применил функцию os.path.split 'photo1.png'
``` ```
help(os.path.split)
Help on function split in module ntpath: Самостоятельно применил функцию os.path.split
```
split(p) help(os.path.split)
Split a pathname. Help on function split in module ntpath:
Return tuple (head, tail) where tail is everything after the final slash. split(p)
Either part may be empty. Split a pathname.
os.path.split(fil) Return tuple (head, tail) where tail is everything after the final slash.
('D:\\POAS\\Hodyuk\\Tema6', 'photo1.png') Either part may be empty.
```
Функция возвращает кортёж из пути доступа к файлу и его имени, отделив их друг от друга os.path.split(fil)
('D:\\POAS\\Hodyuk\\Tema6', 'photo1.png')
С помощью функции os.path.exists можно проверить существует ли путь, заданный в символьной строке – аргументе функции. ```
``` Функция возвращает кортёж из пути доступа к файлу и его имени, отделив их друг от друга
os.path.exists(drkt)
True С помощью функции os.path.exists можно проверить существует ли путь, заданный в символьной строке – аргументе функции.
os.path.exists('D:test\\wrong\\way\\') ```
False os.path.exists(drkt)
``` True
os.path.exists('D:test\\wrong\\way\\')
Проверил наличие файла с известным расположением(если как аргумент задать только имя файла, функция будет искать файл в рабочем каталоге) False
``` ```
os.path.isfile(fil)
True Проверил наличие файла с известным расположением(если как аргумент задать только имя файла, функция будет искать файл в рабочем каталоге)
os.path.isfile(os.path.dirname(fil)+'fil1.txt') ```
False os.path.isfile(fil)
``` True
os.path.isfile(os.path.dirname(fil)+'fil1.txt')
### 4.2 Общая схема работы с файлом False
Для обмена данными с файлом необходимо выполнить следующие операции: ```
• Открытие файла с указанием его имени и цели (чтение, запись, добавление данных); ### 4.2 Общая схема работы с файлом
Для обмена данными с файлом необходимо выполнить следующие операции:
• Выполнение одной или нескольких операций обмена данными с файлом;
• Открытие файла с указанием его имени и цели (чтение, запись, добавление данных);
• Закрытие файла.
• Выполнение одной или нескольких операций обмена данными с файлом;
### 4.3 Открытие файла для записи или чтения - функция open
Открыл файл zapis1.txt для записи данных • Закрытие файла.
```
fp=open(file=drkt+'\\zapis1.txt',mode='w') ### 4.3 Открытие файла для записи или чтения - функция open
``` Открыл файл zapis1.txt для записи данных
Проверил наличие открываемого файла: ```
``` fp=open(file=drkt+'\\zapis1.txt',mode='w')
os.path.isfile(drkt+'\\zapis1.txt') ```
True Проверил наличие открываемого файла:
``` ```
Вообще говоря, аргументы функции с их именами могут располагаться в любом порядке. Если имя файла располагается на месте первого аргумента, а цель использования – на втором, то имена аргументов можно не указывать и просто вводить os.path.isfile(drkt+'\\zapis1.txt')
``` True
fp=open(drkt+'\\zapis1.txt','w') ```
``` Вообще говоря, аргументы функции с их именами могут располагаться в любом порядке. Если имя файла располагается на месте первого аргумента, а цель использования – на втором, то имена аргументов можно не указывать и просто вводить
С помощью функции closed проверил, открыт ли файл(соответственно, если функция возвращает True - файл закрыт, а если False - то открыт). Далее буду использовать этот способ для проверки открытия файла ```
fp=open(drkt+'\\zapis1.txt','w')
``` ```
fp.closed С помощью функции closed проверил, открыт ли файл(соответственно, если функция возвращает True - файл закрыт, а если False - то открыт). Далее буду использовать этот способ для проверки открытия файла
False
``` ```
Если путь в переменной drkt совпадает с рабочим каталогом, то его можно опустить, оставив только имя открываемого файла: fp.closed
``` False
fp=open('zapis1.txt','w') ```
fp.closed Если путь в переменной drkt совпадает с рабочим каталогом, то его можно опустить, оставив только имя открываемого файла:
False ```
``` fp=open('zapis1.txt','w')
Отобразил тип и список атрибутов объекта fp fp.closed
``` False
type(fp) ```
<class '_io.TextIOWrapper'> Отобразил тип и список атрибутов объекта 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'] type(fp)
``` <class '_io.TextIOWrapper'>
dir(fp)
Создаваемые и читаемые файлы могут быть бинарными или символьными. При открытии бинарного файла к указанным выше буквам в аргументе-цели надо добавить символ «b». ['_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+')
fp1.closed Создаваемые и читаемые файлы могут быть бинарными или символьными. При открытии бинарного файла к указанным выше буквам в аргументе-цели надо добавить символ «b».
False ```
``` fp1=open(drkt+'\\zapis2.bin',mode='wb+')
fp1.closed
### 4.4 Закрытие файла False
``` ```
fp.close()
fp.closed ### 4.4 Закрытие файла
True ```
``` fp.close()
fp.closed
### 4.5 Запись в файл с помощью функции write True
Рассмотрел пример создания списка и записи его в файл ```
```
sps=list(range(1,13)) ### 4.5 Запись в файл с помощью функции write
sps Рассмотрел пример создания списка и записи его в файл
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] ```
fp2=open('zapis3.txt','w') sps=list(range(1,13))
fp2.write(str(sps[:4])+'\n') sps
13 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
fp2.write(str(sps[4:8])+'\n') fp2=open('zapis3.txt','w')
13 fp2.write(str(sps[:4])+'\n')
fp2.write(str(sps[8:])+'\n') 13
16 fp2.write(str(sps[4:8])+'\n')
fp2.close() 13
``` fp2.write(str(sps[8:])+'\n')
Содержимое файла [zapis3.txt](zapis3.txt) представлено на рис.3 16
![Рис.3](photo3.png) fp2.close()
```
Следующий пример Содержимое файла [zapis3.txt](zapis3.txt) представлено на рис.3
Рис. 3:
sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]] ![Рис.3](photo3.png)
fp3=open('zapis4.txt','w')
for i in range(len(sps3)): Следующий пример
stroka4=sps3[i][0]+' '+str(sps3[i][1]) ```
fp3.write(stroka4) sps3=[['Иванов И.',1],['Петров П.',2],['Сидоров С.',3]]
fp3=open('zapis4.txt','w')
11 for i in range(len(sps3)):
11 stroka4=sps3[i][0]+' '+str(sps3[i][1])
12 fp3.write(stroka4)
fp3.close()
11
Содержимое файла [zapis4.txt](zapis4.txt) представлено на рис.4 11
![Рис.4](photo4.png) 12
fp3.close()
Легко заметить, что информация записана в файл не очень удачно. ```
Содержимое файла [zapis4.txt](zapis4.txt) представлено на рис.4
Пробую записать информацию в файл другим способом Рис. 4:
``` ![Рис.4](photo4.png)
gh=open('zapis5.txt','w')
for r in sps3: Легко заметить, что информация записана в файл не очень удачно.
gh.write(r[0]+' '+str(r[1])+'\n')
Пробую записать информацию в файл другим способом
12 ```
12 gh=open('zapis5.txt','w')
13 for r in sps3:
gh.close() gh.write(r[0]+' '+str(r[1])+'\n')
```
12
Содержимое файла [zapis5.txt](zapis5.txt) представлено на рис.5 12
![Рис.5](photo5.png) 13
gh.close()
Представил цикл в одной строке: ```
```
gh=open('zapis5.txt','w') Содержимое файла [zapis5.txt](zapis5.txt) представлено на рис.5
for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n') Рис. 5:
![Рис.5](photo5.png)
12
12 Представил цикл в одной строке:
13 ```
gh.close() gh=open('zapis5.txt','w')
``` for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
После выполнения цикла содержимое файла такое же, как было
12
12
### 4.6 Чтений информации из текстового файла: Способ Первый 13
gh.close()
Прочитал информацию из созданного ранее файла zapis3.txt ```
``` После выполнения цикла содержимое файла такое же, как было
sps1=[]
fp=open('zapis3.txt')
for stroka in fp: ### 4.6 Чтений информации из текстового файла: Способ Первый
stroka=stroka.rstrip('\n')
stroka=stroka.replace('[','') Прочитал информацию из созданного ранее файла zapis3.txt
stroka=stroka.replace(']','') ```
sps1=sps1+stroka.split(',') sps1=[]
fp=open('zapis3.txt')
fp.close() for stroka in fp:
sps1 stroka=stroka.rstrip('\n')
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12'] stroka=stroka.replace('[','')
``` stroka=stroka.replace(']','')
Здесь, перед занесением строки в список с помощью метода rstrip, из неё удаляется символ конца строки, а с помощью метода replace – скобки. sps1=sps1+stroka.split(',')
Видно, что полученный список отличается от исходного sps, в первую очередь, типом данных
Преобразовать sps1 в sps можно, например, так: fp.close()
``` sps1
sps2 = [int(i.strip()) for i in sps1] ['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
sps2 ```
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] Здесь, перед занесением строки в список с помощью метода rstrip, из неё удаляется символ конца строки, а с помощью метода replace – скобки.
``` Видно, что полученный список отличается от исходного sps, в первую очередь, типом данных
Преобразовать sps1 в sps можно, например, так:
### 4.7 Чтение с помощью метода read ```
sps2 = [int(i.strip()) for i in sps1]
``` sps2
fp=open('zapis3.txt') [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
stroka1=fp.read(12) ```
stroka2=fp.read()
fp.close() ### 4.7 Чтение с помощью метода read
stroka1
'[1, 2, 3, 4]' ```
stroka2 fp=open('zapis3.txt')
'\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n' stroka1=fp.read(12)
``` stroka2=fp.read()
fp.close()
### 4.8 Самостоятельно изучил чтение информации с помощью методов readline и readlines stroka1
``` '[1, 2, 3, 4]'
fp=open('zapis3.txt') stroka2
stroka3=fp.readline() '\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n'
stroka3 ```
'[1, 2, 3, 4]\n'
stroka4=fp.readline() ### 4.8 Самостоятельно изучил чтение информации с помощью методов readline и readlines
stroka4 ```
'[5, 6, 7, 8]\n' fp=open('zapis3.txt')
strokaAll=fp.readlines() stroka3=fp.readline()
strokaAll stroka3
['[9, 10, 11, 12]\n'] '[1, 2, 3, 4]\n'
fp.close() stroka4=fp.readline()
fp=open('zapis3.txt') stroka4
strokaAll=fp.readlines() '[5, 6, 7, 8]\n'
strokaAll strokaAll=fp.readlines()
['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n'] strokaAll
``` ['[9, 10, 11, 12]\n']
fp.close()
### 4.9 Ввод-вывод с помощью модуля pickle fp=open('zapis3.txt')
Пример этого способа работы с файлами strokaAll=fp.readlines()
``` strokaAll
import pickle ['[1, 2, 3, 4]\n', '[5, 6, 7, 8]\n', '[9, 10, 11, 12]\n']
mnoz1={'pen','book','pen','iPhone','table','book'} ```
fp=open('zapis6.mnz','wb')
fp.closed ### 4.9 Ввод-вывод с помощью модуля pickle
False Пример этого способа работы с файлами
pickle.dump(mnoz1,fp) ```
fp.close() import pickle
``` mnoz1={'pen','book','pen','iPhone','table','book'}
fp=open('zapis6.mnz','wb')
Теперь прочитаю из файла zapis6.mnz fp.closed
``` False
fp=open('zapis6.mnz','rb') pickle.dump(mnoz1,fp)
mnoz2=pickle.load(fp) fp.close()
fp.close() ```
mnoz2
{'book', 'pen', 'table', 'iPhone'} Теперь прочитаю из файла zapis6.mnz
mnoz1 == mnoz2 ```
True fp=open('zapis6.mnz','rb')
``` mnoz2=pickle.load(fp)
Как можно заметить, визуально файлы отличаются, но проверка на совпадение выдаёт результат True fp.close()
mnoz2 не совпадает с тем, что было задано, потому что это множество. Оно исключает повторяющиеся элементы, оставляя только один, а еще не содержит конкретный порядок элементов. Но два множества равны, если у них равны все элементы и их одинаковое количество, вне зависимости от порядка, так что сравнение возвращает True. mnoz2
{'book', 'pen', 'table', 'iPhone'}
А теперь с использованием тех же функций запишите в файл, а затем прочитайте два объекта разных типов: то же множество mnoz1 и ранее созданный список sps3. mnoz1 == mnoz2
``` True
fp=open('zapis7.2ob','wb') ```
pickle.dump(mnoz1,fp) Как можно заметить, визуально файлы отличаются, но проверка на совпадение выдаёт результат True
pickle.dump(sps3,fp) mnoz2 не совпадает с тем, что было задано, потому что это множество. Оно исключает повторяющиеся элементы, оставляя только один, а еще не содержит конкретный порядок элементов. Но два множества равны, если у них равны все элементы и их одинаковое количество, вне зависимости от порядка, так что сравнение возвращает True.
fp.close()
fp=open('zapis7.2ob','rb') А теперь с использованием тех же функций запишите в файл, а затем прочитайте два объекта разных типов: то же множество mnoz1 и ранее созданный список sps3.
obj1=pickle.load(fp) ```
obj2=pickle.load(fp) fp=open('zapis7.2ob','wb')
fp.close() pickle.dump(mnoz1,fp)
obj1,obj2 pickle.dump(sps3,fp)
({'book', 'pen', 'table', 'iPhone'}, [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]) fp.close()
obj1 == mnoz1 fp=open('zapis7.2ob','rb')
True obj1=pickle.load(fp)
obj2 == sps3 obj2=pickle.load(fp)
True fp.close()
``` obj1,obj2
Убедился в совпадении прочитанных данных с введёнными ({'book', 'pen', 'table', 'iPhone'}, [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]])
obj1 == mnoz1
True
## Пункт 5. Перенаправление потоков ввода и вывода obj2 == sps3
Пример 1 True
``` ```
vr_out=sys.stdoutmnoz1 Убедился в совпадении прочитанных данных с введёнными
fc=open('Stroka.txt','w')
sys.stdout=fc
print('запись строки в файл') ## Пункт 5. Перенаправление потоков ввода и вывода
sys.stdout=vr_out Пример 1
print('запись строки на экран') ```
запись строки на экран vr_out=sys.stdoutmnoz1
fc.close() fc=open('Stroka.txt','w')
``` sys.stdout=fc
В результате получаю файл [Stroka.txt](Stroka.txt) со следующим содержанием print('запись строки в файл')
![Рис.6](photo6.png) sys.stdout=vr_out
print('запись строки на экран')
Точно также можно перенаправить поток ввода – sys.stdin – вместо клавиатуры – из файла. запись строки на экран
fc.close()
``` ```
tmp_in = sys.stdin В результате получаю файл [Stroka.txt](Stroka.txt) со следующим содержанием
fd = open("Stroka.txt", "r") Рис. 6:
sys.stdin = fd ![Рис.6](photo6.png)
sys.stdin
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'> Точно также можно перенаправить поток ввода – sys.stdin – вместо клавиатуры – из файла.
while True:
try: ```
line = input () #Считываем из файла строку tmp_in = sys.stdin
print(line) # Отображаем считанное fd = open("Stroka.txt", "r")
except EOFError: sys.stdin = fd
break sys.stdin
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='cp1251'>
запись строки в файл while True:
fd.close() try:
``` line = input () #Считываем из файла строку
print(line) # Отображаем считанное
Вернул стандартное назначение потора ввода except EOFError:
``` break
sys.stdin=tmp_in
``` запись строки в файл
## Пункт 6 fd.close()
Закончил сеанс работы с IDLE ```
Вернул стандартное назначение потора ввода
```
sys.stdin=tmp_in
```
## Пункт 6
Закончил сеанс работы с IDLE

Загрузка…
Отмена
Сохранить