В этом уроке мы разберем еще несколько команд в Питоне 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.


Домашнее задание

  1. Внимательно пропишите каждую строку команды от руки, чтобы запомнить и пройти все действия в уме.
  2. Для каждой строки программы проговорите то действие, которое она выполняет, а лучше всего - напишите комментарий.
  3. Поразбирайтесь в коде, особенно в команде open(). Видите, мы открыли файл в режиме ‘w’. При этом прописали ниже в коде команду truncate. Так ли она нужна в данном режиме? Попробуйте выполнить сценарий без нее.

В следующем уроке мы научимся копировать содержимое файлов - перейти в урок 21.