# ТЕМА 6 "Зеленкина Ксения Михайловна"

## 2.2.
fff=234.5;gg='Значение температуры = '
print(gg, fff)
print(gg, fff, sep="/")
print(gg, fff,sep='/',end='***'); print('____')

print(""" Здесь может выводиться
большой текст,
занимающий несколько строк""")

print("Здесь может выводиться",
      "большой текст,",
      "занимающий несколько строк")

## 2.3.
import sys
sys.stdout.write('Функция write')
sys.stdout.write('Функция write\n')

# 3.
#psw=input('Введите пароль:')
#print(type(psw))

# Пример 1
#while True:
#	znach=float(input('Задайте коэф.усиления = '))
#	if znach<17.5 or znach>23.8:
#		print('Ошибка!')
#	else:
#		break

#Пример 2
#import math
#print(eval(input('введите выражение для расчета = ')))

## 4.1.
import os
ZelenkinaKs = os.getcwd()
print(ZelenkinaKs)
os.chdir('C:\\Users\\user\\OneDrive\\Documents\\ZelenkinaKs\\python-labs\\TEMA5')
print(os.getcwd())
os.chdir('C:\\Users\\user\\OneDrive\\Documents\\ZelenkinaKs\\python-labs\\TEMA6')

import os
from os.path import isdir
# Создание папки
os.mkdir("test_folder")
# Проверка существования папки
print(isdir("test_folder"))
# Просмотр содержимого текущей директории
print(os.listdir())
# Просмотр содержимого конкретной папки
print(os.listdir("test_folder"))
# Удаление папки (должна быть пустой)
os.rmdir("test_folder")
# Проверка после удаления
print(isdir("test_folder"))

fil=os.path.abspath("Отчет6.md")
print(fil)
drkt=os.path.dirname(fil)
print(drkt)
nameFile = os.path.basename(fil)
print(nameFile)
SplitFile = os.path.split(fil)
print(SplitFile)
print(os.path.exists("\\python-labs\\TEMA6"))
print(os.path.exists("C:\\Users\\user\\"))
print(os.path.exists("Отчет6.md"))
print(os.path.exists("."))

exists = os.path.isfile("C:\\Users\\user\\OneDrive\\Documents\\ZelenkinaKs\\python-labs\\TEMA6\\Отчет6.md")
print(exists)

fp=open(file=drkt+'\\zapis1.txt',mode='w')
print(type(fp))
fp.close()

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()

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()

gh = open('zapis5.txt', 'w')
for r in sps3: gh.write(r[0]+' '+str(r[1])+'\n')
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()
print(sps1)

sps1 = []
fp = open('zapis3.txt')
for stroka in fp:
    stroka = stroka.rstrip('\n')
    stroka = stroka.replace('[','')
    stroka = stroka.replace(']','')
    chisla_str = stroka.split(',')
    chisla = [int(x) for x in chisla_str if x]
    sps1.append(chisla)
fp.close()
for podspisok in sps1:
    print(f"[{', '.join(map(str, podspisok))}]")

fp=open('zapis3.txt')
stroka1=fp.read(12)
stroka2=fp.read()
fp.close()
print(stroka1)
print(stroka2)

fp=open('zapis3.txt')
stroka3=fp.readline(5)
stroka4=fp.readlines()
print(stroka3)
print(stroka4)

## 4.9.
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()
print(mnoz2)
print(mnoz1)

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()
print(obj1)
print(mnoz1)
print(obj2)
print(sps3)

## 5.
import sys
vr_out=sys.stdout  #Запоминаем текущий поток вывода
fc=open('Stroka.txt','w') #Откроем файл вывода
sys.stdout=fc #Перенацеливаем стандартный поток вывода на файл
print('запись строки в файл') #Вывод теперь будет не на экран, а в файл
sys.stdout=vr_out  #Восстановление текущего потока
print('запись строки на экран') #Убеждаемся, что вывод на экран восстановился
fc.close()

import sys
tmp_in = sys.stdin #Запоминаем текущий поток ввода
fd = open("Stroka.txt", "r") #Открываем файл для ввода (чтения)
sys.stdin = fd #Перенацеливаем ввод на файл вместо клавиатуры
print(sys.stdin)
while True:
    try:
        line = input () #Считываем из файла строку
        print(line)  # Отображаем считанное
    except EOFError:
        break
fd.close()
sys.stdin=tmp_in #Не забыть вернуть стандартное назначение для потока ввода
