SneguraDS 2 недель назад
Родитель b8d4929f47
Сommit 07cf2112c0

@ -0,0 +1 @@
запись строки в файл

Двоичные данные
TEMA6/bin.mnz

Двоичный файл не отображается.

@ -0,0 +1,72 @@
# Создаётся объект-кортеж со 125 целыми случайными числами из диапазона от 6 до 56, представленными в виде символьных строк.
```py
import random
num = list(range(1, 126, 1))
num
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125]
kor = ()
for i in num:
kor = kor + (random.randint(6, 56),)
kor
(6, 28, 55, 50, 53, 16, 9, 47, 24, 34, 49, 8, 42, 9, 17, 15, 35, 23, 21, 19, 8, 8, 6, 26, 34, 26, 55, 8, 56, 24, 40, 20, 34, 24, 29, 41, 23, 56, 38, 33, 30, 56, 55, 6, 35, 47, 18, 28, 28, 49, 25, 40, 46, 55, 40, 55, 15, 29, 29, 46, 43, 10, 37, 12, 14, 54, 29, 42, 19, 35, 16, 29, 50, 52, 43, 7, 16, 29, 26, 26, 25, 48, 18, 10, 33, 34, 45, 38, 23, 53, 7, 36, 42, 13, 18, 27, 33, 8, 49, 26, 29, 10, 56, 34, 33, 40, 13, 53, 6, 22, 50, 43, 30, 19, 32, 49, 15, 16, 9, 48, 40, 12, 14, 36, 52)
len(kor)
125
str_kor = tuple(map(str, kor))
str_kor
('6', '28', '55', '50', '53', '16', '9', '47', '24', '34', '49', '8', '42', '9', '17', '15', '35', '23', '21', '19', '8', '8', '6', '26', '34', '26', '55', '8', '56', '24', '40', '20', '34', '24', '29', '41', '23', '56', '38', '33', '30', '56', '55', '6', '35', '47', '18', '28', '28', '49', '25', '40', '46', '55', '40', '55', '15', '29', '29', '46', '43', '10', '37', '12', '14', '54', '29', '42', '19', '35', '16', '29', '50', '52', '43', '7', '16', '29', '26', '26', '25', '48', '18', '10', '33', '34', '45', '38', '23', '53', '7', '36', '42', '13', '18', '27', '33', '8', '49', '26', '29', '10', '56', '34', '33', '40', '13', '53', '6', '22', '50', '43', '30', '19', '32', '49', '15', '16', '9', '48', '40', '12', '14', '36', '52')
```
# Создаётся объект-список с вашей фамилией и 4 фамилиями ваших одноклассников.
```py
fam = ["Снегура", "Ефремов", "Туровец", "Хатюхин", "Шабатов"]
```
# Записывается кортеж в бинарный файл.
```py
import os
os.chdir("C:\\Users\\User-PC\\python-labs\\TEMA6")
f = open('bin.mnz', 'wb')
import pickle
pickle.dump(str_kor, f)
```
# Записывается в этот же файл список и закрывается файл.
```py
pickle.dump(fam, f)
f.close()
```
# Открывается этот файл для чтения и считывает из него данные в 2 новых объекта.
```py
f = open('bin.mnz', 'rb')
obj1 = pickle.load(f)
obj2_spis = pickle.load(f)
obj1
('6', '28', '55', '50', '53', '16', '9', '47', '24', '34', '49', '8', '42', '9', '17', '15', '35', '23', '21', '19', '8', '8', '6', '26', '34', '26', '55', '8', '56', '24', '40', '20', '34', '24', '29', '41', '23', '56', '38', '33', '30', '56', '55', '6', '35', '47', '18', '28', '28', '49', '25', '40', '46', '55', '40', '55', '15', '29', '29', '46', '43', '10', '37', '12', '14', '54', '29', '42', '19', '35', '16', '29', '50', '52', '43', '7', '16', '29', '26', '26', '25', '48', '18', '10', '33', '34', '45', '38', '23', '53', '7', '36', '42', '13', '18', '27', '33', '8', '49', '26', '29', '10', '56', '34', '33', '40', '13', '53', '6', '22', '50', '43', '30', '19', '32', '49', '15', '16', '9', '48', '40', '12', '14', '36', '52')
obj2_spis
['Снегура', 'Ефремов', 'Туровец', 'Хатюхин', 'Шабатов']
```
# Проверяется на совпадение новых объектов с исходными и выводится соответствующее сообщение.
```py
obj1 == str_kor
True
obj2_spis == fam
True
```
# Разделяется кортеж на совокупности по 5 чисел в каждой и они записываются в виде отдельных списков со своими именами.
```py
List = []
for i in range(0, 125, 5):
List.append(list(str_kor[i:i + 5]))
List
[['6', '28', '55', '50', '53'], ['16', '9', '47', '24', '34'], ['49', '8', '42', '9', '17'], ['15', '35', '23', '21', '19'], ['8', '8', '6', '26', '34'], ['26', '55', '8', '56', '24'], ['40', '20', '34', '24', '29'], ['41', '23', '56', '38', '33'], ['30', '56', '55', '6', '35'], ['47', '18', '28', '28', '49'], ['25', '40', '46', '55', '40'], ['55', '15', '29', '29', '46'], ['43', '10', '37', '12', '14'], ['54', '29', '42', '19', '35'], ['16', '29', '50', '52', '43'], ['7', '16', '29', '26', '26'], ['25', '48', '18', '10', '33'], ['34', '45', '38', '23', '53'], ['7', '36', '42', '13', '18'], ['27', '33', '8', '49', '26'], ['29', '10', '56', '34', '33'], ['40', '13', '53', '6', '22'], ['50', '43', '30', '19', '32'], ['49', '15', '16', '9', '48'], ['40', '12', '14', '36', '52']]
for i in range(25):
list_name = f"list{i + 1}" #Создается имя переменной (list1, list2,..)
globals()[list_name] = List[i]
list1
['6', '28', '55', '50', '53']
list2
['16', '9', '47', '24', '34']
```

@ -0,0 +1,55 @@
Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32
Enter "help" below or click "Help" above for more information.
import random
num = list(range(1, 126, 1))
num
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125]
kor = ()
for i in num:
kor = kor + (random.randint(6, 56),)
kor
(6, 28, 55, 50, 53, 16, 9, 47, 24, 34, 49, 8, 42, 9, 17, 15, 35, 23, 21, 19, 8, 8, 6, 26, 34, 26, 55, 8, 56, 24, 40, 20, 34, 24, 29, 41, 23, 56, 38, 33, 30, 56, 55, 6, 35, 47, 18, 28, 28, 49, 25, 40, 46, 55, 40, 55, 15, 29, 29, 46, 43, 10, 37, 12, 14, 54, 29, 42, 19, 35, 16, 29, 50, 52, 43, 7, 16, 29, 26, 26, 25, 48, 18, 10, 33, 34, 45, 38, 23, 53, 7, 36, 42, 13, 18, 27, 33, 8, 49, 26, 29, 10, 56, 34, 33, 40, 13, 53, 6, 22, 50, 43, 30, 19, 32, 49, 15, 16, 9, 48, 40, 12, 14, 36, 52)
len(kor)
125
str_kor = tuple(map(str, kor))
str_kor
('6', '28', '55', '50', '53', '16', '9', '47', '24', '34', '49', '8', '42', '9', '17', '15', '35', '23', '21', '19', '8', '8', '6', '26', '34', '26', '55', '8', '56', '24', '40', '20', '34', '24', '29', '41', '23', '56', '38', '33', '30', '56', '55', '6', '35', '47', '18', '28', '28', '49', '25', '40', '46', '55', '40', '55', '15', '29', '29', '46', '43', '10', '37', '12', '14', '54', '29', '42', '19', '35', '16', '29', '50', '52', '43', '7', '16', '29', '26', '26', '25', '48', '18', '10', '33', '34', '45', '38', '23', '53', '7', '36', '42', '13', '18', '27', '33', '8', '49', '26', '29', '10', '56', '34', '33', '40', '13', '53', '6', '22', '50', '43', '30', '19', '32', '49', '15', '16', '9', '48', '40', '12', '14', '36', '52')
fam = ["Снегура", "Ефремов", "Туровец", "Хатюхин", "Шабатов"]
import os
os.chdir("C:\Users\User-PC\python-labs\TEMA6")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
os.chdir("C:\\Users\\User-PC\\python-labs\\TEMA6")
f = open('bin.mnz', 'wb')
import pickle
pickle.dump(str_kor, f)
pickle.dump(fam, f)
f.close()
f = open('bin.mnz', 'rb')
obj1 = pickle.load(f)
obj2_spis = pickle.load(f)
obj1
('6', '28', '55', '50', '53', '16', '9', '47', '24', '34', '49', '8', '42', '9', '17', '15', '35', '23', '21', '19', '8', '8', '6', '26', '34', '26', '55', '8', '56', '24', '40', '20', '34', '24', '29', '41', '23', '56', '38', '33', '30', '56', '55', '6', '35', '47', '18', '28', '28', '49', '25', '40', '46', '55', '40', '55', '15', '29', '29', '46', '43', '10', '37', '12', '14', '54', '29', '42', '19', '35', '16', '29', '50', '52', '43', '7', '16', '29', '26', '26', '25', '48', '18', '10', '33', '34', '45', '38', '23', '53', '7', '36', '42', '13', '18', '27', '33', '8', '49', '26', '29', '10', '56', '34', '33', '40', '13', '53', '6', '22', '50', '43', '30', '19', '32', '49', '15', '16', '9', '48', '40', '12', '14', '36', '52')
obj2_spis
['Снегура', 'Ефремов', 'Туровец', 'Хатюхин', 'Шабатов']
obj1 == str_kor
True
obj2_spis == fam
True
List = []
for i in range(0, 125, 5):
List.append(list(str_kor[i:i + 5]))
List
[['6', '28', '55', '50', '53'], ['16', '9', '47', '24', '34'], ['49', '8', '42', '9', '17'], ['15', '35', '23', '21', '19'], ['8', '8', '6', '26', '34'], ['26', '55', '8', '56', '24'], ['40', '20', '34', '24', '29'], ['41', '23', '56', '38', '33'], ['30', '56', '55', '6', '35'], ['47', '18', '28', '28', '49'], ['25', '40', '46', '55', '40'], ['55', '15', '29', '29', '46'], ['43', '10', '37', '12', '14'], ['54', '29', '42', '19', '35'], ['16', '29', '50', '52', '43'], ['7', '16', '29', '26', '26'], ['25', '48', '18', '10', '33'], ['34', '45', '38', '23', '53'], ['7', '36', '42', '13', '18'], ['27', '33', '8', '49', '26'], ['29', '10', '56', '34', '33'], ['40', '13', '53', '6', '22'], ['50', '43', '30', '19', '32'], ['49', '15', '16', '9', '48'], ['40', '12', '14', '36', '52']]
>>> for i in range(25):
... list_name = f"list{i + 1}" #Создается имя переменной (list1, list2,..)
... globals()[list_name] = List[i]
...
...
>>> list1
['6', '28', '55', '50', '53']
>>> list2
['16', '9', '47', '24', '34']

@ -0,0 +1,252 @@
Python 3.13.7 (tags/v3.13.7:bcee1c3, Aug 14 2025, 14:15:11) [MSC v.1944 64 bit (AMD64)] on win32
Enter "help" below or click "Help" above for more information.
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
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("Здесь может выводиться",
"большой текст,",
"занимающий несколько строк")
Здесь может выводиться большой текст, занимающий несколько строк
import sys
sys.stdout.write('Функция write')
Функция write13
sys.stdout.write('Функция write\n')
Функция write
14
psw=input('Введите пароль:')
Введите пароль:12g
psw
'12g'
while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 17.5
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
os.getcwd()
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
os.getcwd()
NameError: name 'os' is not defined. Did you forget to import 'os'?
import 'os'
SyntaxError: invalid syntax
import os
os.getcwd()
'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313'
os.chdir('C:\Users\User-PC\python-labs\TEMA6')
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
os.chdir('C:/Users/User-PC/python-labs/TEMA6')
os.getcwd()
'C:\\Users\\User-PC\\python-labs\\TEMA6'
snegura = str(os.getcwd())
snegura
'C:\\Users\\User-PC\\python-labs\\TEMA6'
os.chdir('C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313')
snegura = str(os.getcwd())
snegura
'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313'
os.chdir('C:/Users/User-PC/python-labs/TEMA6')
os.mkdir("папка новая")
os.rmdir("папка новая")
os.mkdir("папка новая")
os.rmdir("папка новая")
os.listdir()
['.gitkeep', 'repor.py', 'report.md', 'report.py', '{2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png']
os.path.isdir("папка новая")
False
os.path.isdir("report.md")
False
fil=os.path.abspath("report.md")
fil
'C:\\Users\\User-PC\\python-labs\\TEMA6\\report.md'
drkt=os.path.dirname(fil)
drkt
'C:\\Users\\User-PC\\python-labs\\TEMA6'
name = os.path.basename(fil)
name
'report.md'
head, tail = os.path.split(fil)
head
'C:\\Users\\User-PC\\python-labs\\TEMA6'
tail
'report.md'
os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA6')
True
os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA60')
False
os.path.isfile(fil)
True
open
<built-in function open>
help(open)
fp=open(file=drkt+'\\zapis1.txt',mode='w')
fp=open(drkt+'\\zapis1.txt','w')
fp=open('zapis1.txt','w')
type(fp)
<class '_io.TextIOWrapper'>
fp1=open(drkt+'\\zapis2.bin',mode='wb+')
fp.close()
fp1.close()
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()
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')
gh.close()
SyntaxError: multiple statements found while compiling a single statement
gh=open('zapis5.txt','w')
for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
gh.close()
SyntaxError: invalid syntax
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()
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()
sps
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
sps1
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
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'
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()
mnoz1
{'pen', 'book', 'iPhone', 'table'}
mnoz2
{'pen', 'book', 'iPhone', 'table'}
fp=open('zapis7.2ob','wb')
pickle.dump(mnoz1,fp)
pickle.dump(sps3,fp)
fp.close()
fp=open('zapis7.2ob','rb')
obj1=pickle.load(fp) #Первое обращение к load читает первый объект
obj2=pickle.load(fp) #Второе – читает второй
fp.close()
obj1
{'pen', 'book', 'iPhone', 'table'}
obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
mnoz1
{'pen', 'book', 'iPhone', 'table'}
sps3
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
import sys
vr_out=sys.stdout #Запоминаем текущий поток вывода
fc=open('Stroka.txt','w') #Откроем файл вывода
sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл
print('запись строки в файл') #Вывод теперь будет не на экран, а в файл
sys.stdout=vr_out #Восстановление текущего потока
print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился
SyntaxError: unexpected indent
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()
...
SyntaxError: unexpected indent
>>> fd.close()
>>> sys.stdin=tmp_in #Не забыть вернуть стандартное назначение для потока ввода

@ -0,0 +1,427 @@
# Отчет по теме 6
## 1 Запуск интерактивной оболочки IDLE
Была запущена интерактивная оболочка IDLE.
## 2 Изучение вывода данных на экран дисплея
Были изучены и применены различные способы вывода данных на экран.
## 2.1 Изучение эхо-вывода
```py
>>>stroka='Автоматизированная система управления'
>>>stroka
'Автоматизированная система управления'
```
## 2.2 Изучение вывода данных с помощью печати
Была изучена функция print для вывода текста. Текст был выведен в одну строку, далее в две строки с использованием экранированных последовательностей, далее был выведен текст с дописанным в конце текстом, используя аргумент end. И также был выведен текст в три строки, используя троиные кавычки.
```py
>>>fff=234.5;gg='Значение температуры = '
>>>print(gg, fff) #Можно вывести несколько объектов за одно обращение к функции
Значение температуры = 234.5
>>>print(gg, fff, sep="\n")
Значение температуры =
234.5
>>>print(gg, fff,sep='\n',end='***'); print('____')
Значение температуры =
234.5***____
>>>print()
>>>print(""" Здесь может выводиться
большой текст,
занимающий несколько строк""") #В этом варианте текст выводится в три отдельные строки как и при вводе команды, благодаря троиным кавычкам.
Здесь может выводиться
большой текст,
занимающий несколько строк
>>>print("Здесь может выводиться",
"большой текст,",
"занимающий несколько строк") #В данном случае текст выводится подрят в одну строку.
Здесь может выводиться большой текст, занимающий несколько строк
```
## 2.3 Изучение вывода данных с помощью функции write
Был испортирован модуль sys, и использована функция write, которая записывает и выводит текст, а так же возвращается количество байтов, записанных в строку.
```
>>>import sys
>>>sys.stdout.write('Функция write')
Функция write13
>>>sys.stdout.write('Функция write')
Функция write13
>>>sys.stdout.write('Функция write\n')
Функция write
14
```
## 3 Изучение ввода данных с клавиатуры
С помощью функции input был произведен вывод текста, введенного с клавиатуры. Так же был создан цикл, который просит пользователя ввести значение до тех пор, пока оно не будет удовлетворять определенному интервалу, а потом выводит это значение на дисплей. Также с помощью функции eval Была создана команда, благодаря которой выражение, введенное пользователен с консоли исполняется, и выдается результат расчета.
```py
>>>psw=input('Введите пароль:')
Введите пароль:12g
>>>psw
'12g'
>>>type(psw)
<class 'str'>
```
Ввод с контролем значения. Пусть вводится число, которое должно находиться в интервале значе-ний от 17.5 до 23.8.
```py
>>>while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 15.4
Ошибка!
Задайте коэф.усиления = 21.6
```
Ввод и обработка выражения, подлежащего расчету.
```py
>>>import math
>>>print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
```
## 4 Изучение различных способов чтения данных из файла и записи в файл
Были изучены и применены разные способы чтения и записи данных.
## 4.1 Изучение модуля os для работы с путями к файлам
Был просмотрен текущий рабочий каталог, занесен в переменную d. После этого совершен переход в другой рабочий католог. Были самостоятельно изучены и применены методы из модуля os и подмодуля os.path:
mkdir - создает папку в рабочем каталоге (в приложенном фото видно, что в каталоге появилвсь папка);
![alt text]({2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png)
rmdir - удаляет из каталога пустую папку;
listdir - возвращает список имен файлов/папок в указанном каталоге (или если аргумент не указан, то в текущем каталоге);
path.isdir - возвращает true, если папка является существующей в каталоге.
Далее была создана переменная, содержащая строку - путь в файлу report и имя данного файла. Используя эту переменную, с помощью функций модуля os была создана строка содержащая только путь, потом только имя, а потом применена функция, которая разделяет в одну переменную - путь, в другую - имя файла. Далее было проверено существование определенного пути, и существование определенного файла с указаном каталоге.
```py
>>>import os
>>>os.getcwd()
'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313'
>>>snegura = str(os.getcwd())
>>snegura
'C:\\Users\\User-PC\\AppData\\Local\\Programs\\Python\\Python313'
>>>os.chdir('C:/Users/User-PC/python-labs/TEMA6')
>>>os.mkdir("папка новая")
>>>os.rmdir("папка новая")
>>>os.listdir()
['.gitkeep', 'repor.py', 'report.md', 'report.py', '{2CA98D5E-ED50-4F53-8FA4-B86C3DDE9001}.png']
>>>os.path.isdir("папка новая")
False
>>>fil=os.path.abspath("report.md")
>>>fil
'C:\\Users\\User-PC\\python-labs\\TEMA6\\report.md'
>>>drkt=os.path.dirname(fil)
>>>drkt
'C:\\Users\\User-PC\\python-labs\\TEMA6'
>>>name = os.path.basename(fil)
>>>name
'report.md'
>>>head, tail = os.path.split(fil)
>>>head
'C:\\Users\\User-PC\\python-labs\\TEMA6'
>>>tail
'report.md'
>>>os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA6')
True
>>>os.path.exists('C:\\Users\\User-PC\\python-labs\\TEMA60')
False
>>>os.path.isfile(fil)
True
```
## 4.2 Изучение обобщенного процесса работы с файлами
Было определено, что для обмена данными с файлами необходимо:
• Открыть файла с указанием его имени и цели;
• Выполнить операции обмена данными с файлом;
• Закрыть файл.
## 4.3 Изучение функции open для открытия файлов с разной целью
Была применена команда open с различным написанием аргументов, создан файловый обьект. Выведен тип и список атрибутов этого обьекта.
```py
>>>fp=open(file=drkt+'\\zapis1.txt',mode='w')
>>>fp=open(drkt+'\\zapis1.txt','w') #если имя файла располагается на месте первого аргумента, а цель использования – на втором, то имена аргументов можно не указывать
>>>fp=open('zapis1.txt','w') #путь в переменной drkt совпадает с рабочим каталогом, значит его можно опустить, оставив только имя открываемого файла
>>>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']
>>>fp1=open(drkt+'\\zapis2.bin',mode='wb+')
```
## 4.4 Изучение закрытия файла
Файл был закрыт.
```py
>>>fp.close()
>>>fp1.close()
```
## 4.5 Изучение функции write для записи данных в текст
Был создан список из 12 элементов и поочередно в файл записаны числа из списка в три строки.
```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()
```
![alt text]({BDBC12A7-03FA-405C-B54E-67BB26CD9BB4}.png)
Далее был создан список из трех списков и с помощью цикла for все элементы списка были вписаны в файл в одну строку.
```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()
```
![alt text]({854A9290-003D-4326-B7DB-ECD39C3AD8FB}.png)
Далее с помощью цикла for три списка из общего списка были вписаны в файл поочередно в три строки. Запись цикла была сжата в одну строку, и проверено, что при написании той же инструкции в одну строку, содержимое файла не изменяется, относительно предыдущего метода с этими же инструкциями.
```py
>>>gh=open('zapis5.txt','w')
>>>for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
>>>gh.close()
```
![alt text]({9A45AC78-7541-4B74-BD4D-ADD078966F77}.png)
```py
>>>gh=open('zapis6.txt','w')
>>>for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
12
12
13
>>>gh.close()
```
![alt text]({C091738E-D897-4FB7-9424-D31BEA185FC9}.png)
## 4.6 Изучение одного из способов чтения данных из файла с помощью цикла for
С помощью open был открыт файл для чтения, и из его символов был сконструирован список, состоящий из символов. После символы в списке были преобразованы в числа, и список стал идентичен тому, который создавался ранее и записывался в файл.
```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()
>>>sps
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
>>>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
Был открыт текстовый файл и с помощью функции read из него сначала было прочитано и отображено 12 символов, а потом прочитаны остальные символы с помощью функции 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 Изучение чтения данных из файла по строкам
Самостоятельно были изучены и применены функции: readline - которая читает одну строку, начиная с указателя текущей позиции, и функция readlines, которая по такому же принципу читает все строки и возвращает их в виде списка.
```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
С помощью модуля pickle созданное множество было вписано в бинарный файл, а потом данные прочитаны из этого файла.
```py
>>>import pickle
>>>mnoz1={'pen','book','pen','iPhone','table','book'} #Объект типа «множество»
>>>fp=open('zapis6.mnz','wb') # Бинарный файл – на запись
>>>pickle.dump(mnoz1,fp) #dump – метод записи объекта в файл
>>>fp.close()
```
![alt text]({F0AB1936-ADF9-4D4C-A1DF-1F38DEEF97AA}.png)
```py
>>>fp=open('zapis6.mnz','rb')
>>>mnoz2=pickle.load(fp) #load – метод чтения объекта из бинарного файла
>>>fp.close()
>>>mnoz2 #Результат не такой как при вводе множества mnoz1, так как множество не имеет повторений и порядка элементов, поэтому автоматически множество обьединило повторяющиеся слова.
{'pen', 'iPhone', 'book', 'table'}
mnoz1 == mnoz2
True
```
Также в файл было записано два обьекта и прочитано поочередно с помощью load.
```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) #Первое обращение к load читает первый объект
>>>obj2=pickle.load(fp) #Второе – читает второй
>>>fp.close()
>>>obj1
{'pen', 'iPhone', 'book', 'table'}
>>>mnoz1
{'pen', 'book', 'iPhone', 'table'}
>>>obj2
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
>>>sps3
[['Иванов И.', 1], ['Петров П.', 2], ['Сидоров С.', 3]]
```
## 5 Перенаправление потоков ввода и вывода данных.
Был создан текстовый файл, куда с помощью модуля sys и методы stdout был перенаправлен поток вывода, и в нем был напечатан текст. Далее поток вывода был перенаправлен обратно и проведена проверка с помощью print.
```py
>>>import sys
>>>vr_out=sys.stdout #Запоминаем текущий поток вывода
>>>fc=open('Stroka.txt','w') #Откроем файл вывода
>>>sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл
>>>print('запись строки в файл') #Вывод теперь будет не на экран, а в файл
>>>sys.stdout=vr_out #Восстановление текущего потока
>>>print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился
запись строки на экран
>>>fc.close()
```
![alt text]({4585BE4A-ABEE-4EB8-979E-CED135733C96}.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 #Не забыть вернуть стандартное назначение для потока ввода
```
## 6 Завершение работы в IDLE
Был завершен сеанс в среде IDLE.

@ -0,0 +1,3 @@
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]

@ -0,0 +1 @@
Иванов И. 1Петров П. 2Сидоров С. 3

@ -0,0 +1,3 @@
Иванов И. 1
Петров П. 2
Сидоров С. 3

Двоичные данные
TEMA6/zapis6.mnz

Двоичный файл не отображается.

@ -0,0 +1,3 @@
Иванов И. 1
Петров П. 2
Сидоров С. 3

Двоичные данные
TEMA6/zapis7.2ob

Двоичный файл не отображается.

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 37 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 17 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 17 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 23 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 17 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 23 KiB

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 40 KiB

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