Uploaded by fawok30360

лекция файлы

advertisement
Lecture #4
ФАЙЛЫ
http://minak.ru
Lecture #4
Что такое файл?
Файл представляет собой набор данных, который хранится на носителе,
таком как диск или флэш-накопитель.
Файл имеет имя.
Доступ к файлу означает установление соединения между файлом и
программой для обмена данными.
http://minak.ru
Lecture #4
Файлы
Текстовые
Как правило, предназначены для
чтения человеком Помимо алфавитно
цифровых символов, используются
управляющие символы, например, \n.
http://minak.ru
Бинарные
Содержит не читаемую информацию.
Обрабатываются программами.
Lecture #4
Файловые объекты (потоки)
При открытии файла создаеcя объект файла или файловый поток,
который представляет собой соединение между программой и
информацией в файле (на диске).
http://minak.ru
Lecture #4
Стандартный поток ввода-вывода
Программа
Устройства вывода
Устройства ввода
http://minak.ru
Lecture #4
Файловый поток ввода-вывода
Программа
Файл ввода
http://minak.ru
Файл вывода
Lecture #4
Буферизация
Считывание с диска происходит очень медленно. Поэтому, данные из
файла накапливаются в буфере (в объекте файла).
Это означает, что объект файл содержит копию информации из файла
(cash).
http://minak.ru
Lecture #4
Создание файлового объекта
fileObject = open("my_file.txt", "r")
http://minak.ru
Lecture #4
Где находится файл?
C:/WinPython34/notebooks/my_file.txt
http://minak.ru
Lecture #4
Закрытие потока
fileObject.close() - закрывает обращения к файловому объекту.
http://minak.ru
Lecture #4
Режимы доступа к файлам
Режим
'r'
'w'
'a'
'r+'
'w+'
'a+'
http://minak.ru
Ситуация при обращении к файлу
файл существует
нет файла
только файл открывается, дискриптор в
ошибка
чтение начале файла
содержимое файла удаляется,
только дискриптор в начале файла
создается новый файл,
запись дискриптор устанавливается в
дискриптор в начале файла
конец содержания файла
файл открывается, дискриптор в
ошибка
начале файла
чтение и содержимое файла удаляется,
запись дискриптор в начале файла
создается новый файл,
файл открывается, дискриптор в дискриптор в начале файла
конце файла
Доступ
Lecture #4
Работа с текстовыми файлами
При обращении к текстовому файлу, его содержимое
является строкой .
Считывая информацию или записывая информацию
нужно учитывать, что производится работа со строкой .
http://minak.ru
Lecture #4
Методы чтения из файла
fileObject.read() - считывает все содержимое файла в виде строки и
возвращает его.
fileObject.read(N) - может иметь необязательный параметр, целое
число, чтобы ограничить чтение до N байт.
fileObject.readline() - считывает строку из файла
http://minak.ru
Lecture #4
Файл input.txt
Первая строка
Вторая строка
Третья строка
Пример чтения
всего файла
>>> file_in = open ("input.txt", 'r')
>>> text = file_in.read()
>>> file_in.close()
>>> print(text)
Первая строка
Вторая строка
Третья строка
http://minak.ru
Lecture #4
Файл input.txt
Первая строка
Вторая строка
Третья строка
Пример чтения
части файла
>>> file_in = open ("input.txt", 'r')
>>> text = file_in.read(5)
>>> file_in.close()
>>> print(text)
Перва
http://minak.ru
Lecture #4
Файл input.txt
Первая строка
Вторая строка
Третья строка
Пример чтения строки
из файла
>>> file_in = open ("input.txt", 'r')
>>> text = file_in.readline()
>>> file_in.close()
>>> print(text)
Первая строка
>>>
http://minak.ru
Lecture #4
Чтение строк из файла с помощью
итератора
for line in fileObject:
print(line)
http://minak.ru
Lecture #4
Файл input.txt
Пример чтения файла
Первая строка
Вторая строка
Третья строка
по строкам
>>> file_in = open ("input.txt", 'r')
>>> for line in file_in:
print(line)
Первая строка
Вторая строка
Третья строка
>>> file_in.close()
http://minak.ru
Lecture #4
Чтение списка строк из файла
fileObject.readlines() - возвращает список всех строк из файла
http://minak.ru
Lecture #4
Файл input.txt
Первая строка
Вторая строка
Третья строка
Пример чтения файла
в список строк
>>> file_in = open ("input.txt", 'r')
>>> list_of_text = file_in.readlines()
>>> file_in.close()
>>> print(list_of_text[2])
Третья строка
http://minak.ru
Lecture #4
Запись данных в файл
>>>
>>>
>>>
>>>
http://minak.ru
file_out = open("output.txt",'w')
print('Первая строка', file = file_out)
print('Вторая строка\nТретья строка', file = file_out)
file_out.close()
Lecture #4
Еще один способ
записи данных в файл
>>>
>>>
>>>
28
>>>
http://minak.ru
text = 'Первая строка\nВторая строка\n'
file_out = open("output.txt",'w')
file_out.write(text)
file_out.close()
Lecture #4
Каков результат работы программы?
input_file = open ('input.txt','r')
output_file = open ('output.txt','w')
for line_str in input_file:
new_str = ''
line_str = line_str.strip()
for char in line_str:
new_str = char + new_str
print(new_str, file = output_file)
print('Строка {:20s} преобразована в строку {:20s}'.format(line_str,new_str))
input_file.close()
output_file.close()
http://minak.ru
Lecture #4
ИСКЛЮЧЕНИЯ
http://minak.ru
Lecture #4
Какие бывают исключения?
http://minak.ru
Ошибки
События
Например, неверное обращение к
элементу списка по индексу, попытка
открыть несуществующий файл и т.д.
Например, алгоритм поиска не
находит значение, получено сообщение
по электронной почте и т.д.
Lecture #4
Названия ошибок
>>> input_file = open ('noname.txt','r')
Traceback (most recent call last):
File "<pyshell#42>", line 1, in <module>
input_file = open ('noname.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: 'noname.txt'
>>> my_int = int('a string')
Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
my_int = int('a string')
ValueError: invalid literal for int() with base 10: 'a string'
http://minak.ru
Lecture #4
Основная идея
• "Отлавливать" исключения там, где это ожидается в прогамме.
• Если мы получим исключительную ситуацию, попытаемся ее
определить.
• "Обрабатываем" исключительную ситуацию.
• Если нам не удается обработать исключение, пусть с этим
справляется Python (который обычно останавливает программу).
http://minak.ru
Lecture #4
Все операции ввода - зло до тех
пор, пока не доказано обратное.
Ховард М., Лебланк Д.
http://minak.ru
Lecture #4
Конструкция
try - except
try:
<инструкция, которая может пораждать ошибки>
except <название ошибки>:
<обработка исключения>
http://minak.ru
Lecture #4
Пример обработки исключений
file_str = input('Введите имя файла: ')
find_line_str = input('Введите номер строки в файле: ')
try:
input_file = open (file_str,'r')
find_line_int = int(find_line_str)
line_count_int = 1
for line_str in input_file:
if line_count_int == find_line_int:
print('Строка {} файла {} содержит:\n{}'.format(find_line_int, file_str,
line_str))
break
line_count_int += 1
else:
print('Строка {} в файле {} не найдена.'.format(find_line_int, file_str))
input_file.close()
http://minak.ru
Lecture #4
except FileNotFoundError:
print('Файл {} не найден.'.format(file_str))
except ValueError:
print('Введенное значение {} не является целым числом.'.format(find_line_str))
print('Исполнение программы завершено.')
http://minak.ru
Вложения
4­01.py
4­02.py
Download