Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

332 строки
12 KiB
Markdown

# Отчёт по теме 6
Соловьёва Екатерина А-01-23
## 1 Запуск интерактивной оболочки IDLE
```py
import os
os.chdir('C:\\Users\\Ekaterina\\OneDrive\\Desktop\\Solovyova\\python-labs\\TEMA6')
```
## 2 вывод данных на экран дисплея
## 2.1 Вывод в командной строке
```py
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
```
## 2.2 Вывод с использованием функции print
Вывод информации на экран. Можно использовать и в теле функции и в командной строке
```py
fff=234.5;gg='Значение температуры = '
print(gg, fff)
Значение температуры = 234.5
print(gg, fff,sep='/',end='***'); print('____')
Значение температуры = /234.5***____
print()
print(""" Здесь может выводиться
большой текст,
занимающий несколько строк""")
Здесь может выводиться
большой текст,
занимающий несколько строк
print("Здесь может выводиться",
"большой текст,",
"занимающий несколько строк")
Здесь может выводиться большой текст, занимающий несколько строк
```
* Тройные кавычки сохраняют структуру многострочного текста
## 2.3 Вывод с использованием метода write объекта sys.stdout
```py
import sys
sys.stdout.write('Функция write')
Функция write13
sys.stdout.write('Функция write\n')
Функция write
14
```
## 2 Ввод данных с клавиатуры
```py
Введите пароль:1234
print(psw)
1234
type(psw)
<class 'str'>
while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 15.4
Ошибка!
Задайте коэф.усиления = 21.6
print(znach)
21.6
import math
print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
## 4 Ввод-вывод при работе с файлами
## 4.1 Функции для работы с путем к файлу
```py
import os
os.chdir('C:\\Users\\Ekaterina\\OneDrive\\Desktop\\Solovyova\\python-labs\\TEMA6')
solovyova=os.getcwd()#показывает какой рабочий каталог установлен в текущий момент времени
print(solovyova)
C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6
os.mkdir('a')#cоздает новую директорию
os.listdir()#возвращает список имён всех файлов и папок в указанной директории
['.gitkeep', 'a', 'report.md', 'task.md']
os.path.isdir('a')#проверяет, является ли указанный путь директорией, возвращает True, если путь существует и является директорией
True
os.rmdir('a')#удаляет директорию
os.listdir()
['.gitkeep', 'report.md', 'task.md']
fil=os.path.abspath("oplata.dbf")
print(fil)
C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6\oplata.dbf
fil2=os.path.abspath("report.md")
print(fil2)
C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6\report.md
drkt=os.path.dirname(fil) #функция os.path.dirname(fil) возвращает директорию (папку) из указанного пути, убирая последний компонент (обычно имя файла)
print(drkt)
C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6
os.path.basename(fil)
'oplata.dbf'
os.path.split(fil)
('C:\\Users\\Ekaterina\\OneDrive\\Desktop\\Solovyova\\python-labs\\TEMA6', 'oplata.dbf')
os.path.exists("report.md")
True
os.path.isfile('TEMA6')
False
os.path.isfile(fil)#проверяет наличие файла в рабочем каталоге
True
os.path.isfile(os.path.dirname(fil)+'fil1.txt')#проверяет, что по указанному пути существует файл
False
```
## 4.2. Общая схема работы с файлом
Для обмена данными с файлом необходимо выполнить следующие операции:
* Открытие файла с указанием его имени и цели (чтение, запись, добавление данных);
* Выполнение одной или нескольких операций обмена данными с файлом;
* Закрытие файла.
## 4.3. Открытие файла для записи или чтения данных – функция open.
```py
fp=open('zapis1.txt','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']
```
Для второго аргумента «mode=…» могут быть заданы следующие значения:
* w – запись с созданием нового файла или перезапись существующего файла,
* w+ - чтение и запись/перезапись файла,
* r – только чтение (это значение - по умолчанию),
* r+ - чтение и/или запись в существующий файл,
* a – запись в конец существующего файла или, если его нет, запись с созданием файла,
* a+ - то же, что и в «a», но с возможностью чтения из файла.
В зависимости от значения этого аргумента тип создаваемой файловой переменной может быть разным.
При открытии бинарного файла к указанным выше буквам в аргументе-цели надо добавить сим-вол «b».
```py
fp1=open(drkt+'\\zapis2.bin',mode='wb+')
type(fp1)
<class '_io.BufferedRandom'>
```
## 4.4. Закрытие файла.
```py
fp.close();fp1.close()
```
## 4.5 Запись информации в файл с помощью метода write
```py
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()
```
Содержимое файла приведено ниже
```txt
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]
```
Попытка 1
```py
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)
fp3.close()
```
Содержимое текстового файла:
```txt
Иванов И. 1Петров П. 2Сидоров С. 3
```
Попытка 2
```py
gh = open('zapis5.txt','w')
for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
gh.close()
```
Содержимое текстового файла:
```txt
Иванов И. 1
Петров П. 2
Сидоров С. 3
```
## 4.6 Первый способ чтения информации из текстового файла
```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()
print(sps1)
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
print(sps)
[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()
print(stroka1)
[1, 2, 3, 4]
print(stroka2)
[5, 6, 7, 8]
[9, 10, 11, 12]
```
## 4.8 Чтение информации с помощью методов readline и readlines
```py
fp = open('zapis3.txt', 'r')
line1 = fp.readline() # читает 1ую строку
line2 = fp.readline() # читает 2ую строку
line3 = fp.readline() # читает 3ую строку
print("readline():")
print("Строка 1:", repr(line1))
print("Строка 2:", repr(line2))
print("Строка 3:", repr(line3))
fp.close()
readline():
Строка 1: '[1, 2, 3, 4]\n'
Строка 2: '[5, 6, 7, 8]\n'
Строка 3: '[9, 10, 11, 12]\n'
fp = open('zapis3.txt', 'r')
lines = fp.readlines() # читает все строки в список
print("readlines():", lines)
fp.close()
readlines(): ['[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)
fp.close()
```
```txt
Вывод: 耄锣 鐨谆楐桯湥钌մ慢汥钌Ͱ敮钌Ѣ潯殔逮
```
```py
fp=open('zapis6.mnz','rb')
mnoz2=pickle.load(fp)
fp.close()
mnoz2
{'book', 'iPhone', 'pen', 'table'}
mnoz1 == mnoz2
True
```
Множество в Python автоматически удаляет все дубликаты и не сохраняет порядок элементов, поэтому mnoz2 не совпадает с тем, что было задано при создании mnoz1
```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)
obj2=pickle.load(fp)
fp.close()
print(obj1,obj2)
{'book', 'iPhone', 'pen', 'table'} [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
print(mnoz1,sps3)
{'iPhone', 'table', 'pen', 'book'} [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
```
## 5 Перенаправление потоков ввода и вывода данных
```py
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
```