Готовый перевод Learn Python The Hard Way / Трудный Путь Изучения Python: Exercise 16: Reading and Writing Files

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

Урок 16: Чтение и запись файлов

Если вы сделали последнее обучающее упражнение, то должны были ознакомиться со всеми видами команд (методами/функциями), которые могут быть применены к файлам. Вот список команд, который я хочу, чтобы вы запомнили:

Close - закрывает файл. Как File-> Save .. в редакторе.
read - Читает содержимое файла. Можно присвоить результат переменной.
Readline - Читает одну строку из текстового файла.
truncate - Очищает файл. Остерегайтесь, если вы заботитесь о файле.
write (stuff) - записывает материал в файл.
На данный момент это важные команды, которые вы должны знать. Некоторые из них принимают параметры, но мы действительно не заботbvcz об этом. Вам только нужно помнить, что запись принимает параметр строку, которую вы хотите записать в файл.

Давайте используем полученные знания и напишем простой текстовой редактор.

from sys import argv

script, filename = argv

print "We're going to erase %r." % filename
print "If you don't want that, hit CTRL-C (^C)."
print "If you do want that, hit RETURN."

raw_input("?")

print "Opening the file..."
target = open(filename, 'w')

print "Truncating the file. Goodbye!"
target.truncate()

print "Now I'm going to ask you for three lines."

line1 = raw_input("line 1: ")
line2 = raw_input("line 2: ")
line3 = raw_input("line 3: ")

print "I'm going to write these to the file."

target.write(line1)
target.write("\n")
target.write(line2)
target.write("\n")
target.write(line3)
target.write("\n")

print "And finally, we close it."
target.close()

Это большой файл, возможно, самый большой из тех, которые вы набирали. Так что не торопитесь, проверьте его перед запуском.

Что Вы должны увидеть
Возможны два варианта того, что вы увидите. Первый вариант вывода Вашего нового скрипта:

$ python ex16.py test.txt
We're going to erase 'test.txt'.
If you don't want that, hit CTRL-C (^C).
If you do want that, hit RETURN.
?
Opening the file...
Truncating the file. Goodbye!
Now I'm going to ask you for three lines.
line 1: Mary had a little lamb
line 2: It's fleece was white as snow
line 3: It was also tasty
I'm going to write these to the file.
And finally, we close it.

Сейчас откройте файл, который вы создали (в моем случае test.txt) в Вашем редакторе и проверьте. Аккуратно, не правда ли?

Учебные упражнения
Если Вы чувствуете, что что-то не понимаете, то вернитесь назад и используйте комментарии для того, чтобы изгнать непонимание из вашего разума. Один простой комментарий к каждой строке программы, приведенной выше поможет вам понять смысл ваших действий или, по крайней мере, вы поймете, что этот вопрос нужно будет изучить более тщательно.
Напишите скрипт, похожий на последнее упражнение, который использует argv для чтения имени файла, который вы будете создавать.
В предыдущем скрипте слишком много повторений. Используйте строки, форматы и инструкцию прерывания для вывода на экран строк line1, line2 и line3 при помощи команды одной target.write() вместо шести.
Осталось узнать почему мы должны были использовать дополнительный параметр 'w' при открытии файла. Подсказка: функция open пытается обезопасить файл требованием явного указания того, что мы собираемся в него писать. Если вы открыли файл в режиме 'w', обязательно ли потом использовать функцию target.truncate()? Посмотрите документацию по функции open языка Рython и узнайте, так ли это.

Общие вопросы обучающихся
Обязательна ли функция truncate() при использовании параметра 'w'?
Смотри учебное упражнение #5.

Что означает 'w'?
В действительности это строка, содержащая символ режима работы с файлом. Если мы используем 'w', мы говорим: "открыть файл в режиме записи". Мы также можем использовать 'r' для режима чтения, 'a' для режима добавления и модификации данных в файле.

Какие модификаторы мы можем использовать в режиме работы с файлами?
Наиболее важным модификатором, о котором вы должны знать является +, т.е. вы можете использовать режимы 'w+', 'r+' и 'a+'. Это означает, что мы можем открыть файл одновременно для чтения и записи и в зависимости от положения символа работать с файлом различными способами.

Можно ли просто открыть файл в режиме 'r' (чтения)?
Да, в этом режиме функция open() работает по умолчанию (без указания параметра режима).

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/35742/176296

Переводчики: t0pep0, victor8632, No1

Настройки

Готово:

100.00% КП = 1.0