diff --git a/TEMA6/4.5.py b/TEMA6/4.5.py new file mode 100644 index 0000000..cf3b358 --- /dev/null +++ b/TEMA6/4.5.py @@ -0,0 +1,11 @@ +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() + + + + + diff --git a/TEMA6/4.6.py b/TEMA6/4.6.py new file mode 100644 index 0000000..af65eef --- /dev/null +++ b/TEMA6/4.6.py @@ -0,0 +1,8 @@ +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() diff --git a/TEMA6/4.7.py b/TEMA6/4.7.py new file mode 100644 index 0000000..1b1159e --- /dev/null +++ b/TEMA6/4.7.py @@ -0,0 +1,4 @@ +fp = open('zapis3.txt', 'r') +lines = fp.readlines() +print("readlines():", lines) +fp.close() diff --git a/TEMA6/4.9.py b/TEMA6/4.9.py new file mode 100644 index 0000000..2c698c7 --- /dev/null +++ b/TEMA6/4.9.py @@ -0,0 +1,22 @@ +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 #читает первый + +obj2 = pickle.load(fp); obj2 #читает второй + + diff --git a/TEMA6/5.py b/TEMA6/5.py new file mode 100644 index 0000000..f1a6495 --- /dev/null +++ b/TEMA6/5.py @@ -0,0 +1,26 @@ +import sys +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 +while True: + try: + line = input() + print(line) + except EOFError: + break +fd.close() +sys.stdin = tmp_in + + + + + diff --git a/TEMA6/OPLATA.dbf b/TEMA6/OPLATA.dbf new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/Stroka.txt b/TEMA6/Stroka.txt new file mode 100644 index 0000000..48d3f7e --- /dev/null +++ b/TEMA6/Stroka.txt @@ -0,0 +1 @@ + diff --git a/TEMA6/report.md b/TEMA6/report.md index c632a5c..4b2c9b0 100644 --- a/TEMA6/report.md +++ b/TEMA6/report.md @@ -84,9 +84,6 @@ print(eval(input('введите выражение для расчета = '))) ## 4 Ввод-вывод при работе с файлами - - - ## 4.1 Функции для работы с путем к файлу ```py @@ -126,8 +123,6 @@ os.path.isfile(os.path.dirname(fil)+'fil1.txt')#проверяет, что по False ``` - - ## 4.2. Общая схема работы с файлом Для обмена данными с файлом необходимо выполнить следующие операции: * Открытие файла с указанием его имени и цели (чтение, запись, добавление данных); @@ -211,11 +206,8 @@ fp3.close() gh = open('zapis5.txt','w') for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n') - ``` - - Содержимое текстового файла: ```txt @@ -224,8 +216,6 @@ for r in sps3: Сидоров С. 3 ``` - - ## 4.6 Первый способ чтения информации из текстового файла ```py @@ -244,9 +234,23 @@ 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() -## 4.7 Чтение информации из файла с помощью методов readline и readlines +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') @@ -264,157 +268,77 @@ readline(): Строка 3: '[9, 10, 11, 12]\n' fp = open('zapis3.txt', 'r') -lines = fp.readlines() # читает ВСЕ строки в список +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.8 Ввод-вывод объектов с использованием функций из модуля pickle +## 4.9 Ввод-вывод объектов с использованием функций из модуля pickle ```py - ->>> import pickle - ->>> mnoz1={'pen','book','pen','iPhone','table','book'} - ->>> fp=open('zapis6.mnz','wb') - ->>> pickle.dump(mnoz1,fp) - ->>> fp.close() - ->>> fp.close() - ->>> fp=open('zapis6.mnz','rb') - ->>> mnoz2=pickle.load(fp) - ->>> fp.close() - ->>> print(mnoz2) - -{'iPhone', 'pen', 'table', '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 - -{'iPhone', 'pen', 'table', 'book'} - ->>> mnoz1 - -{'iPhone', 'pen', 'table', 'book'} - ->>> obj2 - -\[\['Иванов И.', 1], \['Петров П.', 2], \['Сидоров С.', 3]] - ->>> sps3 - -\[\['Иванов И.', 1], \['Петров П.', 2], \['Сидоров С.', 3]] - ->>> mnoz1 == obj1 - -True - ->>> sps3 == obj2 - -True - +import pickle +mnoz1={'pen','book','pen','iPhone','table','book'} +fp = open('zapis6.mnz','wb') +pickle.dump(mnoz1,fp) +fp.close() ``` - - - -## 4.9 Перенаправление потоков ввода и вывода данных - - - -```py - ->>> import sys - ->>> vr\_out=sys.stdout - ->>> fc=open('Stroka.txt','w') - ->>> sys.stdout=fc - ->>> print('запись строки в файл') - ->>> sys.stdout=vr\_out - ->>> print('запись строки на экран') - -запись строки на экран - ->>> fc.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 +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 - +fd.close() +sys.stdin = tmp_in ``` + diff --git a/TEMA6/task.md b/TEMA6/task.md new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/zapis1.txt b/TEMA6/zapis1.txt new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/zapis2.bin b/TEMA6/zapis2.bin new file mode 100644 index 0000000..e69de29 diff --git a/TEMA6/zapis3.txt b/TEMA6/zapis3.txt new file mode 100644 index 0000000..8132aa8 --- /dev/null +++ b/TEMA6/zapis3.txt @@ -0,0 +1,3 @@ +[1, 2, 3, 4] +[5, 6, 7, 8] +[9, 10, 11, 12] diff --git a/TEMA6/zapis4.txt b/TEMA6/zapis4.txt new file mode 100644 index 0000000..edd0c45 --- /dev/null +++ b/TEMA6/zapis4.txt @@ -0,0 +1 @@ + . 1 . 2 . 3 \ No newline at end of file diff --git a/TEMA6/zapis5.txt b/TEMA6/zapis5.txt new file mode 100644 index 0000000..578a63e --- /dev/null +++ b/TEMA6/zapis5.txt @@ -0,0 +1,3 @@ +Иванов И.;1 +Петров П.;2 +Сидоров С.;3 diff --git a/TEMA6/zapis6.mnz b/TEMA6/zapis6.mnz new file mode 100644 index 0000000..4aeaa61 Binary files /dev/null and b/TEMA6/zapis6.mnz differ diff --git a/TEMA6/zapis7.2ob b/TEMA6/zapis7.2ob new file mode 100644 index 0000000..eac54ad Binary files /dev/null and b/TEMA6/zapis7.2ob differ