В этом уроке мы разберем еще несколько команд в Питоне 2.7 для работы с файлами.
Это следующие команды:
read()
– эта команда позволяет прочесть все содержимое того или иного файла. С данной командой мы уже встречались в предыдущем уроке.
readline
- эта команда позволяет прочесть всего-лишь одну строку из того или иного файла.
close
– эта команда сохраняет и закрывает файл. Работа этой команды аналогична нажатию в текстовом редакторе на Файл-Сохранить.
write()
– эта команда производит запись данных в тот или иной открытый файл. Внимание: сначала необходимо открыть файл командой open. При этом если открыть файл в режиме ‘w’, то командой write файл перезапишется полностью. Если же открыть файл в режиме ‘a’, то командой write в файл просто добавится новый текст.
truncate
– а эта команда производит очистку всего содержимого файла.
Напомню, что команду open()
мы разобрали в прошлом уроке при открытии и чтении содержимого файла (перейти в урок 19).
Практический пример
Создаем на рабочем столе текстовый файл test16_text.txt
и вписываем в него следующий текст:
Я раньше не знал язык программирования Питон.
Должно получиться как на этом фото:
Сохраняем текстовый файл в кодировке OEM 866. Это нужно для того, чтобы на экране выводились кириллические буквы, а не кракозябры. Как сохранить: в программе Notepad++ нажимаем вверху на: Кодировки - Кодировки -Кириллица - OEM 866
.
Теперь создаем на рабочем столе файл test16.py
Пишем в него руками следующий программный код:
# -*- coding: utf- 8 -*- import codecs, sys outf = codecs.getwriter('cp866')(sys.stdout, errors='replace') sys.stdout = outf from sys import argv script, filename = argv print u"Сейчас программа выполнит очистку файла %r." % filename print u"Если вы не желаете, чтобы это произошло, нажмите сочетание клавиш CTRL+C (^C)." print u"Если вы все-таки желаете очистить файл, нажмите клавишу Enter." raw_input("?") print u"Открываем текстовый файл..." target = open(filename, 'w') print u"Файл очищен от содержимого." print u"Сейчас введите три новых строки." stroka1 = raw_input(u"строка 1: ") stroka2 = raw_input(u"строка 2: ") stroka3 = raw_input(u"строка 3: ") print u"Эти строки будут записаны в текстовый файл." target.write(stroka1) target.write("\n") target.write(stroka2) target.write("\n") target.write(stroka3) target.write("\n") print u"Сохраняем и закрываем файл." target.close()
Краткое пояснение к коду.
В начале программы мы прописываем как обычно код для адекватного отображения кириллических символов.
Далее – как обычно – работа с переменной argv (более подробно работа с argv разбирается ЗДЕСЬ и ЗДЕСЬ).
Далее прописываем условия, которые предлагает команда пользователю в интерактивном режиме – стереть файл или не надо стирать.
Далее программа сама открывает файл test16_text.txt, очищает его от содержимого и предлагает пользователю вписать в него три новых строки с помощью команды raw_input ()
. Далее программа присваивает эти строки переменным, а потом эти переменные уже вписывает в файл с помощью команды write
.
В конце программа сохраняет и закрывает файл с помощью команды close
.
Теперь открываем программу PowerShell и прописываем команду: python desktop/test16.py desktop/test16_text.txt
Выполняем все действия, в том числе нажимаем клавишу Enter, чтобы до конца пройти все действия, предлагаемые программой. А также заполняем все три новых строки.
В итоге у вас должно получиться примерно как на этих картинках:
Открываем файл test16_text.txt на рабочем столе и видим следующий текст, что говорит о том, что Python таки записал в файл тот текст, что мы вводили в PowerShell.
Домашнее задание
- Внимательно пропишите каждую строку команды от руки, чтобы запомнить и пройти все действия в уме.
- Для каждой строки программы проговорите то действие, которое она выполняет, а лучше всего - напишите комментарий.
- Поразбирайтесь в коде, особенно в команде
open()
. Видите, мы открыли файл в режиме‘w’
. При этом прописали ниже в коде командуtruncate
. Так ли она нужна в данном режиме? Попробуйте выполнить сценарий без нее.
В следующем уроке мы научимся копировать содержимое файлов - перейти в урок 21.