11 KiB
Отчёт по теме 6
Соловьёва Екатерина А-01-23
1 Запуск интерактивной оболочки IDLE
import os
os.chdir('C:\\Users\\Ekaterina\\OneDrive\\Desktop\\Solovyova\\python-labs\\TEMA6')
2 вывод данных на экран дисплея
2.1 Вывод в командной строке
stroka='Автоматизированная система управления'
stroka
'Автоматизированная система управления'
2.2 Вывод с использованием функции print
Вывод информации на экран. Можно использовать и в теле функции и в командной строке
fff=234.5;gg='Значение температуры = '
print(gg, fff)
Значение температуры = 234.5
print(gg, fff,sep='/',end='***'); print('____')
Значение температуры = /234.5***____
print()
print(""" Здесь может выводиться
большой текст,
занимающий несколько строк""")
Здесь может выводиться
большой текст,
занимающий несколько строк
print("Здесь может выводиться",
"большой текст,",
"занимающий несколько строк")
Здесь может выводиться большой текст, занимающий несколько строк
- Тройные кавычки сохраняют структуру многострочного текста
2.3 Вывод с использованием метода write объекта sys.stdout
import sys
sys.stdout.write('Функция write')
Функция write13
sys.stdout.write('Функция write\n')
Функция write
14
2 Ввод данных с клавиатуры
Введите пароль:1234
print(psw)
1234
type(psw)
<class 'str'>
while True:
znach=float(input('Задайте коэф.усиления = '))
if znach<17.5 or znach>23.8:
print('Ошибка!')
else:
break
Задайте коэф.усиления = 15.4
Ошибка!
Задайте коэф.усиления = 21.6
print(znach)
21.6
import math
print(eval(input('введите выражение для расчета = ')))
введите выражение для расчета = math.log10(23/(1+math.exp(-3.24)))
1.34504378689765
4 Ввод-вывод при работе с файлами
4.1 Функции для работы с путем к файлу
import os
os.chdir('C:\\Users\\Ekaterina\\OneDrive\\Desktop\\Solovyova\\python-labs\\TEMA6')
solovyova=os.getcwd()#показывает какой рабочий каталог установлен в текущий момент времени
print(solovyova)
C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6
os.mkdir('a')#cоздает новую директорию
os.listdir()#возвращает список имён всех файлов и папок в указанной директории
['.gitkeep', 'a', 'report.md', 'task.md']
os.path.isdir('a')#проверяет, является ли указанный путь директорией, возвращает True, если путь существует и является директорией
True
os.rmdir('a')#удаляет директорию
os.listdir()
['.gitkeep', 'report.md', 'task.md']
fil=os.path.abspath("oplata.dbf")
print(fil)
C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6\oplata.dbf
fil2=os.path.abspath("report.md")
print(fil2)
C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6\report.md
drkt=os.path.dirname(fil) #функция os.path.dirname(fil) возвращает директорию (папку) из указанного пути, убирая последний компонент (обычно имя файла)
print(drkt)
C:\Users\Ekaterina\OneDrive\Desktop\Solovyova\python-labs\TEMA6
os.path.basename(fil)
'oplata.dbf'
os.path.split(fil)
('C:\\Users\\Ekaterina\\OneDrive\\Desktop\\Solovyova\\python-labs\\TEMA6', 'oplata.dbf')
os.path.exists("report.md")
True
os.path.isfile('TEMA6')
False
os.path.isfile(fil)#проверяет наличие файла в рабочем каталоге
True
os.path.isfile(os.path.dirname(fil)+'fil1.txt')#проверяет, что по указанному пути существует файл
False
4.2. Общая схема работы с файлом
Для обмена данными с файлом необходимо выполнить следующие операции:
- Открытие файла с указанием его имени и цели (чтение, запись, добавление данных);
- Выполнение одной или нескольких операций обмена данными с файлом;
- Закрытие файла.
4.3. Открытие файла для записи или чтения данных – функция open.
fp=open('zapis1.txt','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']
Для второго аргумента «mode=…» могут быть заданы следующие значения: w – запись с созданием нового файла или перезапись существующего файла, w+ - чтение и запись/перезапись файла, r – только чтение (это значение - по умолчанию), r+ - чтение и/или запись в существующий файл, a – запись в конец существующего файла или, если его нет, запись с созданием файла, a+ - то же, что и в «a», но с возможностью чтения из файла. В зависимости от значения этого аргумента тип создаваемой файловой переменной может быть разным.
При открытии бинарного файла к указанным выше буквам в аргументе-цели надо добавить сим-вол «b».
fp1=open(drkt+'\\zapis2.bin',mode='wb+')
type(fp1)
<class '_io.BufferedRandom'>
4.4. Закрытие файла.
fp.close();fp1.close()
4.5 Запись информации в файл с помощью метода write
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()
Содержимое файла приведено ниже
[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]
Попытка 1
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()
Содержимое текстового файла:
Иванов И. 1Петров П. 2Сидоров С. 3
Попытка 2
gh = open('zapis5.txt','w')
for r in sps3:
gh.write(r[0]+' '+str(r[1])+'\n')
gh.close()
Содержимое текстового файла:
Иванов И. 1
Петров П. 2
Сидоров С. 3
4.6 Первый способ чтения информации из текстового файла
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)
['1', ' 2', ' 3', ' 4', '5', ' 6', ' 7', ' 8', '9', ' 10', ' 11', ' 12']
print(sps)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
4.7 Чтение информации из файла с помощью методов readline и readlines
fp = open('zapis3.txt', 'r')
line1 = fp.readline() # читает 1ую строку
line2 = fp.readline() # читает 2ую строку
line3 = fp.readline() # читает 3ую строку
print("readline():")
print("Строка 1:", repr(line1))
print("Строка 2:", repr(line2))
print("Строка 3:", repr(line3))
fp.close()
readline():
Строка 1: '[1, 2, 3, 4]\n'
Строка 2: '[5, 6, 7, 8]\n'
Строка 3: '[9, 10, 11, 12]\n'
fp = open('zapis3.txt', 'r')
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
>>> 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
4.9 Перенаправление потоков ввода и вывода данных
>>> 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
<\_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