ответвлено от main/python-labs
lab6 and test module 2
Этот коммит содержится в:
1
TEMA6/Stroka.txt
Обычный файл
1
TEMA6/Stroka.txt
Обычный файл
@@ -0,0 +1 @@
|
||||
запись строки в файл
|
||||
273
TEMA6/report.md
Обычный файл
273
TEMA6/report.md
Обычный файл
@@ -0,0 +1,273 @@
|
||||
# Отчет по теме 6
|
||||
|
||||
Махнов Георгий, А-01-23
|
||||
|
||||
## Тема 6. Ввод-вывод данных и операции с файлами
|
||||
|
||||
### 2. Вывод данных на экран дисплея.
|
||||
|
||||
```py
|
||||
>>> stroka='Автоматизированная система управления'
|
||||
>>> stroka
|
||||
'Автоматизированная система управления'
|
||||
>>> fff=234.5;gg='Значение температуры = '
|
||||
```
|
||||
#### 2.1 функция `print`
|
||||
```py
|
||||
>>> print(gg, fff)
|
||||
Значение температуры = 234.5
|
||||
>>> print(gg, fff, sep='/')
|
||||
Значение температуры = /234.5
|
||||
>>> print(gg, fff,sep='/',end='***'); print('____')
|
||||
Значение температуры = /234.5***____
|
||||
>>> print()
|
||||
|
||||
>>> print(""" Здесь может выводиться
|
||||
... большой текст,
|
||||
... занимающий несколько строк""")
|
||||
Здесь может выводиться
|
||||
большой текст,
|
||||
занимающий несколько строк
|
||||
>>> print("Здесь может выводиться",
|
||||
... "большой текст,",
|
||||
... "занимающий несколько строк")
|
||||
Здесь может выводиться большой текст, занимающий несколько строк
|
||||
```
|
||||
#### 2.2 метод `write`
|
||||
|
||||
```py
|
||||
import sys
|
||||
>>> sys.stdout.write('Функция write')
|
||||
Функция write13
|
||||
>>> sys.stdout.write('Функция write\n')
|
||||
Функция write
|
||||
14
|
||||
```
|
||||
Выводимое число - количество символов, включая пробелы и переносы.
|
||||
sys.stdout.write() - функция, которая выводит на экран дисплея (или любой другой поток стандартного вывода) эхо-выводом строку, которую внесли в функцию, и возвращает число - количество символов. В отличие от print() требует передачи только строковых аргументов и на выводе не переносит на новую строку.
|
||||
### 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 Функции для работы с путем к файлу
|
||||
```py
|
||||
>>>
|
||||
>>> import os
|
||||
>>> Makhnov = os.getcwd()
|
||||
>>> print(Makhnov)
|
||||
"C:\Users\gmack\OneDrive\Рабочий стол\3 KURS\LABS\python-labs"
|
||||
>>> os.chdir("C:/Users/gmack/OneDrive/Рабочий стол/3 KURS/LABS/python-labs/TEMA6")
|
||||
>>> os.getcwd()
|
||||
'C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA6'
|
||||
|
||||
>>> os.mkdir("C:/Users/gmack/OneDrive/Рабочий стол/3 KURS/LABS/python-labs/LAB6")
|
||||
>>> os.rmdir("C:/Users/gmack/OneDrive/Рабочий стол/3 KURS/LABS/python-labs/LAB6")
|
||||
>>> os.listdir("C:/Users/gmack/OneDrive/Рабочий стол/3 KURS/LABS/python-labs")
|
||||
['.git', '.gitignore', 'README.md', 'TEMA0', 'TEMA1', 'TEMA2', 'TEMA3', 'TEMA4', 'TEMA5', 'TEMA6', 'TEMA7', 'TEMA8', 'TEMA9']
|
||||
|
||||
>>> fil = os.path.abspath("report.md")
|
||||
>>> fil
|
||||
'C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA6\\report.md'
|
||||
>>> drkt=os.path.dirname(fil)
|
||||
>>> drkt
|
||||
'C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA6'
|
||||
>>> os.path.basename(fil)
|
||||
'report.md'
|
||||
>>> os.path.split(fil)
|
||||
('C:\\Users\\gmack\\OneDrive\\Рабочий стол\\3 KURS\\LABS\\python-labs\\TEMA6', 'report.md')
|
||||
```
|
||||
Возвращает кортеж с двумя объектами - путем к директории и именем файла
|
||||
```py
|
||||
>>> os.path.exists('some.md')
|
||||
False
|
||||
>>> os.path.isfile('task.md')
|
||||
False
|
||||
>>> os.path.isfile('report.md')
|
||||
True
|
||||
```
|
||||
|
||||
#### 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__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__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`
|
||||
|
||||
```py
|
||||
>>> sps=list(range(1,13))
|
||||
>>> fp2=open('zapis3.txt','w')
|
||||
>>> fp2.write(str(sps[:4])+'\n')
|
||||
>>> fp2.write(str(sps[4:8])+'\n')
|
||||
>>> fp2.write(str(sps[8:])+'\n')
|
||||
>>> fp2.close()
|
||||
```
|
||||
|
||||
[Созданный файл](zapis3.txt)
|
||||
```py
|
||||
>>> fp3=open('zapis4.txt','w', encoding="utf-8")
|
||||
>>> for i in range(len(sps3)):
|
||||
... stroka4=sps3[i][0]+' '+str(sps3[i][1])
|
||||
... fp3.write(stroka4)
|
||||
...
|
||||
11
|
||||
11
|
||||
12
|
||||
>>> fp3.close()
|
||||
```
|
||||
[Созданный файл](zapis4.txt)
|
||||
```py
|
||||
gh=open('zapis5.txt','w')
|
||||
for r in sps3:
|
||||
gh.write(f'{r[0]} {str(r[1])}\n')
|
||||
|
||||
gh.close()
|
||||
```
|
||||
[Созданный файл](zapis5.txt)
|
||||
#### 4.6. Первый способ чтения информации из текстового файла.
|
||||
|
||||
```py
|
||||
>>> sps1=[]
|
||||
fp=open('zapis3.txt')
|
||||
sps1=[]
|
||||
|
||||
>>> 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.
|
||||
|
||||
```py
|
||||
>>> fp=open('zapis3.txt')
|
||||
>>> stroka1=fp.read(12)
|
||||
>>> stroka2=fp.read()
|
||||
>>> fp.close()
|
||||
>>> stroka1, stroka2
|
||||
('[1, 2, 3, 4]', '\n[5, 6, 7, 8]\n[9, 10, 11, 12]\n')
|
||||
```
|
||||
|
||||
#### 4.8 Чтение информации с помощью методов readline и readlines
|
||||
|
||||
```py
|
||||
>>> with open('zapis3.txt') as fl:
|
||||
... print(fl.readline())
|
||||
... print(fl.readlines())
|
||||
...
|
||||
[1, 2, 3, 4]
|
||||
|
||||
['[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()
|
||||
```
|
||||
[Созданный файл](zapis6.mnz)
|
||||
```py
|
||||
fp=open('zapis6.mnz','rb')
|
||||
mnoz2=pickle.load(fp)
|
||||
fp.close()
|
||||
|
||||
>>> mnoz2
|
||||
{'pen', 'table', 'iPhone', 'book'}
|
||||
>>> mnoz1
|
||||
{'pen', 'table', 'iPhone', 'book'}
|
||||
>>> mnoz1 == mnoz2
|
||||
True
|
||||
|
||||
>>> 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()
|
||||
>>> obj1, obj2, sps3
|
||||
({'iPhone', 'book', 'pen', 'table'}, [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]], [['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]])
|
||||
```
|
||||
|
||||
### 5. Перенаправление потоков ввода и вывода данных
|
||||
|
||||
```py
|
||||
>>> import sys
|
||||
>>> vr_out=sys.stdout
|
||||
>>> fc=open('Stroka.txt','w', encoding='utf-8')
|
||||
>>> 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'>
|
||||
|
||||
>>> fd = open("Stroka.txt", "r", encoding='utf-8')
|
||||
>>> sys.stdin = fd
|
||||
>>> sys.stdin
|
||||
<_io.TextIOWrapper name='Stroka.txt' mode='r' encoding='utf-8'>
|
||||
>>> while True:
|
||||
... try:
|
||||
... line = input()
|
||||
... print(line)
|
||||
... except EOFError:
|
||||
... break
|
||||
...
|
||||
запись строки в файл
|
||||
>>> fd.close()
|
||||
>>> sys.stdin=tmp_in
|
||||
```
|
||||
37
TEMA6/task.md
Обычный файл
37
TEMA6/task.md
Обычный файл
@@ -0,0 +1,37 @@
|
||||
# Общее контрольное задание по теме 6
|
||||
|
||||
Махнов Георгий, А-01-23
|
||||
|
||||
## Задание
|
||||
|
||||
* Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
|
||||
* Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
|
||||
* Записывается кортеж в бинарный файл.
|
||||
* Записывается в этот же файл список и закрывается файл.
|
||||
* Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
|
||||
* Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
|
||||
* Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами.
|
||||
|
||||
## Решение
|
||||
```py
|
||||
from random import *
|
||||
from pickle import dump, load
|
||||
|
||||
tpl = tuple(str(randint(6, 56)) for _ in range(125))
|
||||
surnameTuple = ['Махнов', 'Коваленко', 'Лазарев', 'Анисенков']
|
||||
print(tpl, surnameTuple)
|
||||
|
||||
with open('test.bin', 'wb') as fil:
|
||||
dump(tpl, fil)
|
||||
dump(surnameTuple, fil)
|
||||
|
||||
with open('test.bin', 'rb') as fil2:
|
||||
obj1 = load(fil2)
|
||||
obj2 = load(fil2)
|
||||
print(obj1, obj2, '\n', tpl == obj1, surnameTuple == obj2)
|
||||
|
||||
for i in range(25):
|
||||
exec(f'list{i}=list(tpl[{i*5}:{i*5+5}])')
|
||||
exec(f"print(list{i})")
|
||||
#print(list3) #для проверки
|
||||
```
|
||||
50
TEMA6/test.md
Обычный файл
50
TEMA6/test.md
Обычный файл
@@ -0,0 +1,50 @@
|
||||
# Индивидуальное контрольное задание по модулю 2
|
||||
|
||||
Махнов Георгий, А-01-23
|
||||
|
||||
## Задание 4
|
||||
|
||||
1) Создайте словарь с 7 элементами, в которых ключами являются логины пользователей, а значениями - их пароли.
|
||||
|
||||
2) Запросите у пользователя логин и пароль, проверьте их наличие в качестве элемента словаря. Если такой элемент найден, выдайте сообщение "Access granted", иначе - "Access denied".
|
||||
|
||||
3) Запишите словарь в бинарный файл и после этого удалите словарь из памяти.
|
||||
|
||||
4) Прочитайте словарь из файла. Отобразите его на экране.
|
||||
|
||||
5) Запросите у пользователя логин и пароль нового пользователя и добавьте соответствующий элемент в словарь.
|
||||
|
||||
## Решение
|
||||
```py
|
||||
from pickle import dump, load
|
||||
|
||||
|
||||
user_dict = {'user1':'passwd1', 'user2':'passwd2', 'user3':'passwd3', 'user4':'passwd4', 'user5':'passwd5', 'user6':'passwd6', 'user7':'passwd7'}
|
||||
login = input("Enter your login: ")
|
||||
passw = input("Enter your password: ")
|
||||
if login in user_dict.keys() and user_dict[login] == passw:
|
||||
print("Access granted")
|
||||
else:
|
||||
print("Access denied")
|
||||
|
||||
with open("users.bin", 'wb') as fl:
|
||||
dump(user_dict, fl)
|
||||
del(user_dict)
|
||||
|
||||
with open('users.bin', 'rb') as fl:
|
||||
user_dict_new = load(fl)
|
||||
print(f"{user_dict_new} is new user dictionary")
|
||||
|
||||
login_new = input("Enter your login: ")
|
||||
user_dict_new[login_new] = input("Enter your password: ")
|
||||
print(user_dict_new)
|
||||
|
||||
|
||||
>>> Enter your login: user1
|
||||
Enter your password: passwd1
|
||||
Access granted
|
||||
{'user1': 'passwd1', 'user2': 'passwd2', 'user3': 'passwd3', 'user4': 'passwd4', 'user5': 'passwd5', 'user6': 'passwd6', 'user7': 'passwd7'} is new user dictionary
|
||||
Enter your login: user_new
|
||||
Enter your password: passw_new
|
||||
{'user1': 'passwd1', 'user2': 'passwd2', 'user3': 'passwd3', 'user4': 'passwd4', 'user5': 'passwd5', 'user6': 'passwd6', 'user7': 'passwd7', 'user_new': 'passw_new'}
|
||||
```
|
||||
35
TEMA6/testing.py
Обычный файл
35
TEMA6/testing.py
Обычный файл
@@ -0,0 +1,35 @@
|
||||
'''
|
||||
M2_4
|
||||
1) Создайте словарь с 7 элементами, в которых ключами являются логины пользователей, а значениями - их пароли.
|
||||
|
||||
2) Запросите у пользователя логин и пароль, проверьте их наличие в качестве элемента словаря.
|
||||
Если такой элемент найден, выдайте сообщение "Access granted", иначе - "Access denied".
|
||||
|
||||
3) Запишите словарь в бинарный файл и после этого удалите словарь из памяти.
|
||||
|
||||
4) Прочитайте словарь из файла. Отобразите его на экране.
|
||||
|
||||
5) Запросите у пользователя логин и пароль нового пользователя и добавьте соответствующий элемент в словарь.
|
||||
'''
|
||||
from pickle import dump, load
|
||||
|
||||
|
||||
user_dict = {'user1':'passwd1', 'user2':'passwd2', 'user3':'passwd3', 'user4':'passwd4', 'user5':'passwd5', 'user6':'passwd6', 'user7':'passwd7'}
|
||||
login = input("Enter your login: ")
|
||||
passw = input("Enter your passw: ")
|
||||
if login in user_dict.keys() and user_dict[login] == passw:
|
||||
print("Access granted")
|
||||
else:
|
||||
print("Access denied")
|
||||
|
||||
with open("users.bin", 'wb') as fl:
|
||||
dump(user_dict, fl)
|
||||
del(user_dict)
|
||||
|
||||
with open('users.bin', 'rb') as fl:
|
||||
user_dict_new = load(fl)
|
||||
print(f"{user_dict_new} is new user dictionary")
|
||||
|
||||
login_new = input("Enter your login: ")
|
||||
user_dict_new[login_new] = input("Enter your password: ")
|
||||
print(user_dict_new)
|
||||
0
TEMA6/zapis1.txt
Обычный файл
0
TEMA6/zapis1.txt
Обычный файл
0
TEMA6/zapis2.bin
Обычный файл
0
TEMA6/zapis2.bin
Обычный файл
3
TEMA6/zapis3.txt
Обычный файл
3
TEMA6/zapis3.txt
Обычный файл
@@ -0,0 +1,3 @@
|
||||
[1, 2, 3, 4]
|
||||
[5, 6, 7, 8]
|
||||
[9, 10, 11, 12]
|
||||
1
TEMA6/zapis4.txt
Обычный файл
1
TEMA6/zapis4.txt
Обычный файл
@@ -0,0 +1 @@
|
||||
Иванов И. 1Петров П. 2Сидоров С. 3
|
||||
3
TEMA6/zapis5.txt
Обычный файл
3
TEMA6/zapis5.txt
Обычный файл
@@ -0,0 +1,3 @@
|
||||
Иванов И. 1
|
||||
Петров П. 2
|
||||
Сидоров С. 3
|
||||
Двоичные данные
TEMA6/zapis6.mnz
Обычный файл
Двоичные данные
TEMA6/zapis6.mnz
Обычный файл
Двоичный файл не отображается.
Двоичные данные
TEMA6/zapis7.2ob
Обычный файл
Двоичные данные
TEMA6/zapis7.2ob
Обычный файл
Двоичный файл не отображается.
Двоичные данные
test.bin
Обычный файл
Двоичные данные
test.bin
Обычный файл
Двоичный файл не отображается.
Двоичные данные
users.bin
Обычный файл
Двоичные данные
users.bin
Обычный файл
Двоичный файл не отображается.
Ссылка в новой задаче
Block a user