Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
Урок 16: Чтение и запись файлов
No1
10.10.13 в 13:58
|
|
Если вы сделали Study Drills из последнего упражнения вы должны были видеть все виды команд (методы / функции) ,которые могли бы дать файлам. Вот список команд, я хочу, чтобы вы их запомнили:
No1
10.10.13 в 13:59
Если вы сделали последнее обучающее упражнение, то должны были ознакомиться со всеми видами команд (методами/функциями), которые могут быть применены к файлам. Вот список команд, который я хочу, чтобы вы запомнили:
victor8632
25.03.14 в 11:20
|
|
Close - закрывает файл. Как File-> Save .. в редакторе. read - Читает содержимое файла. Можно присвоить результат переменной. Readline - Читает одну строку из текстового файла. truncate - Очищает файл. Остерегайтесь, если вы заботитесь о файле. write (stuff) - записывает материал в файл. На данный момент это важные команды, которые вы должны знать. Некоторые из них принимают параметры, но мы действительно не заботbvcz об этом. Вам только нужно помнить, что запись принимает параметр строку, которую вы хотите записать в файл.
No1
10.10.13 в 14:01
|
|
Давайте используем полученные знания и напишем простой текстовой редактор.
t0pep0
13.11.13 в 10:56
|
|
from sys import argv
t0pep0
13.11.13 в 10:56
|
|
script, filename = argv
t0pep0
13.11.13 в 10:56
|
|
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."
t0pep0
13.11.13 в 10:56
|
|
raw_input("?")
t0pep0
13.11.13 в 10:57
|
|
print "Opening the file..." target = open(filename, 'w')
t0pep0
13.11.13 в 10:57
|
|
print "Truncating the file. Goodbye!" target.truncate()
t0pep0
13.11.13 в 10:57
|
|
print "Now I'm going to ask you for three lines."
t0pep0
13.11.13 в 10:57
|
|
line1 = raw_input("line 1: ") line2 = raw_input("line 2: ") line3 = raw_input("line 3: ")
t0pep0
13.11.13 в 10:57
|
|
print "I'm going to write these to the file."
t0pep0
13.11.13 в 10:57
|
|
target.write(line1) target.write("\n") target.write(line2) target.write("\n") target.write(line3) target.write("\n")
t0pep0
13.11.13 в 10:57
|
|
print "And finally, we close it." target.close()
t0pep0
13.11.13 в 10:57
|
|
Это большой файл, возможно, самый большой из тех, которые вы набирали. Так что не торопитесь, проверьте его перед запуском.
victor8632
25.03.14 в 12:38
|
|
Что Вы должны увидеть Возможны два варианта того, что вы увидите. Первый вариант вывода Вашего нового скрипта:
t0pep0
13.11.13 в 11:03
|
|
$ 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.
t0pep0
13.11.13 в 11:03
|
|
Сейчас откройте файл, который вы создали (в моем случае test.txt) в Вашем редакторе и проверьте. Аккуратно, не правда ли?
t0pep0
13.11.13 в 11:05
|
|
Учебные упражнения Если Вы чувствуете, что что-то не понимаете, то вернитесь назад и используйте комментарии для того, чтобы изгнать непонимание из вашего разума. Один простой комментарий к каждой строке программы, приведенной выше поможет вам понять смысл ваших действий или, по крайней мере, вы поймете, что этот вопрос нужно будет изучить более тщательно. Напишите скрипт, похожий на последнее упражнение, который использует argv для чтения имени файла, который вы будете создавать. В предыдущем скрипте слишком много повторений. Используйте строки, форматы и инструкцию прерывания для вывода на экран строк line1, line2 и line3 при помощи команды одной target.write() вместо шести. Осталось узнать почему мы должны были использовать дополнительный параметр 'w' при открытии файла. Подсказка: функция open пытается обезопасить файл требованием явного указания того, что мы собираемся в него писать. Если вы открыли файл в режиме 'w', обязательно ли потом использовать функцию target.truncate()? Посмотрите документацию по функции open языка Рython и узнайте, так ли это.
victor8632
24.01.14 в 10:56
|
|
Общие вопросы обучающихся Обязательна ли функция truncate() при использовании параметра 'w'? Смотри учебное упражнение #5.
victor8632
25.03.14 в 12:13
|
|
Что означает 'w'? В действительности это строка, содержащая символ режима работы с файлом. Если мы используем 'w', мы говорим: "открыть файл в режиме записи". Мы также можем использовать 'r' для режима чтения, 'a' для режима добавления и модификации данных в файле.
victor8632
25.03.14 в 12:21
|
|
Какие модификаторы мы можем использовать в режиме работы с файлами? Наиболее важным модификатором, о котором вы должны знать является +, т.е. вы можете использовать режимы 'w+', 'r+' и 'a+'. Это означает, что мы можем открыть файл одновременно для чтения и записи и в зависимости от положения символа работать с файлом различными способами.
victor8632
25.03.14 в 12:31
|
|
Можно ли просто открыть файл в режиме 'r' (чтения)? Да, в этом режиме функция open() работает по умолчанию (без указания параметра режима).
victor8632
25.03.14 в 12:34
|
|