EfremovSI 2 месяцев назад
Родитель ddc95a853e
Сommit 8b00372134

@ -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'
<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:\\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)
<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()
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
```
Загрузка…
Отмена
Сохранить