Похожие презентации:
Лекция13+
1.
Лекция 13 Работа сфайлами и каталогами
2.
Работа с файламиЧаще всего данные для обработки поступают из
внешних источников – файлов.
• Существуют различные форматы файлов, наиболее
простой
и
универсальный
–
текстовый.
Он открывается в любом текстовом редакторе
(например, Блокноте). Расширения у текстовых
файлов: .txt, .html, .csv (их достаточно много).
• Помимо текстовых есть другие типы файлов (аудио,
видео, .pdf, .doc, .ppt и пр.), которые открываются в
специальных программах (аудио или видео
проигрывателях, Pdf reader, Word и пр.).
• Бинарные файлы содержат нетекстовой формат.
Примеры: .bin, .dat, .exe.
3.
Задачи при работе сфайлами
Работа с файлами и каталогами — важный аспект
любой программной разработки. В Python встроены
мощные инструменты для работы с файловой системой,
которые позволяют читать и записывать данные,
организовывать каталоги и управлять их содержимым.
Задачи, которые можно решить:
• Чтение и запись файлов.
• Работа с текстовыми и бинарными файлами.
• Создание, удаление и перемещение файлов и
каталогов.
• Работа с большими объемами данных.
• Обработка ошибок при работе с файловой системой.
4.
Операции с файлами в Python• Текстовые файлы
– Обыкновенные текстовые файлы (произвольный формат
хранения данных)
– Файлы в формате CSV (значения, разделенные запятыми)
– Файлы в формате JSON (данные представлены в виде пар
"ключ : значение" в частично структурированном формате)
• Файлы в .doc, .docx формате (Word)
• Табличные файлы
– Файлы в формате CSV
– Файлы Excel
• PDF файлы
5.
Открытие, созданиеи закрытие файла
ЗА ОТКРЫТИЕ ФАЙЛОВ в языке «Python» отвечает функция open(), которая
имеет формат:
open(<путь к файлу>, <режим доступа>, <кодировка>)
Путь к файлу может быть:
– абсолютным (полный путь к
файлу);
– относительным (название
файла
с
расширением,
если файл находится в одной
папке с приложением «Python»).
****символ «слеш» является
специальным
символом,
следовательно, при указании
пути этот символ необходимо
удваивать.
Режим доступа, представляет
собой
строку,
в
которой
указывается,
для
чего
открывается файл.
Кодировка, при работе в текстовом режиме
кодировку указывать необязательно, однако,
работая в бинарном режиме, без ее указания
программа будет выдавать ошибку. Получить
перечень всех возможных кодировок:
>>> import encodings.aliases
>>> print (encodings.aliases.aliases)
6.
Открытие, созданиеи закрытие файла
Возможны следующие режимы доступа (открытия):
7.
Открытие, созданиеи закрытие файла
Применяя режимы доступа:
МОЖНО СОЗДАТЬ ФАЙЛ, применяя функцию open(), если
указать абсолютный путь к создаваемому файлу, то он и будет создан
по указанному адресу, а при условии указания только названия
файла и его расширения, то файл будет размещен в папке с
приложением «Python»:
8.
Открытие, созданиеи закрытие файла
После того, как файл был открыт, появляется возможность
узнать о нем следующую информацию:
1) функция file.closed выводит True
если файл был закрыт:
2) функция file.mode выводит
режим доступа, с которым был
открыт файл:
3) функция file.name выводит имя
файла:
9.
Открытие, созданиеи закрытие файла
«Python» автоматически закрывает файл, если файловый объект, к которому
он привязан, присваивается другому файлу.
ЗАКРЫТЬ
Кроме того
ФАЙЛ ВРУЧНУЮ позволяет функция
close(), при этом любая несохраненная информация будет потеряна:
10.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
1.
Метод
write()
–
позволяет
записать
или
последовательность
байтов
в
файл,
указанных
в
данный метод выводит количество записанных символов или байтов:
В результате выполнения
указанного программного кода
создается файл week.txt,
размещенный в папке с
приложением «Python», с
созданной записью
строку
параметре,
11.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
2. Метод writelines() – позволяет осуществить запись последовательности, указанной в
параметре, в файл, при этом, если все элементы последовательности являются строками, то файл
должен быть открыт в текстовом режиме, и если все элементы являются последовательностями
байтов, то файл соответственно должен быть открыт в бинарном режиме:
12.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
3.
Метод
writable()
в файл, выводя True,
в противном случае:
–
позволяет
выявить
если файл поддерживает
возможность
записи
запись, и False –
13.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
4. Метод read() – позволяет вывести данные из файла, при этом если файл открыт в текстовом
режиме, то выводится строка, а если в бинарном, то выводится последовательность байтов. В
случае, если параметр не указан, то выводится содержимое файла от текущей позиции указателя до
конца файла:
Если в качестве параметра указать число, то
за каждый вызов будет выводить указанное
количество символов или байтов.
При достижении конца файла будет
выведена пустая строка:
14.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
5. Метод readline() – осуществляет считывание из файла одну строку при каждом вызове, при
условии, если файл открыт в текстовом режиме, то выводится строка, а если в бинарном –
последовательность байтов. Выводимая строка включает символ перевода строки,
за исключением последней строки – если она не завершается символом перевода строки, то
данный символ добавлен не будет. При достижении конца файла выводится пустая строка:
Если в качестве параметра указано число, а
количество символов в строке меньше значения
указанного параметра, то будет считана только
одна строка, а не указанное количество
символов, а если количество символов в строке
превышает значение параметра, то будет
выведено указанное количество символов:
15.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
6. Метод readlines() – выполняет считывание всего содержимого файла в список, каждый элемент
которого будет содержать только одну строку, включая символ перевода строки. Исключением
является последняя строка – если она не завершается символом перевода строки, то символ
перевода строки добавлен не будет. Если файл открыт в текстовом режиме, то будет выполнен
вывод списка строк, а если в бинарном – список объектов типа bytes:
16.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
7. Метод __next__() – применяется для считывания только одной строки при каждом вызове. Если
файл открыт в текстовом режиме, то будет выведена строка, а если в бинарном, то
последовательность байтов. Как только будет достигнут конец файла программа выведет
исключение stopiteration:
Применяя рассматриваемый метод можно
осуществлять перебор файла построчно с
помощью оператора цикла for, который на
каждый итерации будет вызывать метод
__next__():
17.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
8. Метод truncate() позволяет обрезать файл до указанного в параметре количества символов при
работе в текстовом режиме, и до указанного в параметре количества байтов при работе в бинарном
режиме. Рассматриваемый метод выводит новый размер файла:
18.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
9. Метод tell() – выводит позицию указателя относительно начала файла в виде целого числа, при
этом символ перевода строки считается дополнительными байтами:
19.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
10. Метод seek(<смещение>, <позиция>) – выполняет установку указателя в позицию, имеющую
смещение, указанное в первом параметре относительно позиции, указанной во втором параметре.
При этом в параметре <позиция> могут быть указаны следующие атрибуты или значения:
1) io.SEEK_SET или 0 – начало файла (значение по умолчанию);
2) io.SEEK_CUR или 1 – текущая позиция указателя, здесь положительное значение смещения
вызывает перемещение к концу файла, отрицательное – к началу;
3) io.SEEK_END или 2 – конец файла.
Осуществить вывод значений указанных атрибутов можно следующим образом:
20.
Методы, применяемыев работе с файлами
Открытие файла обеспечивает возможность выполнения дальнейшей работы с файлом,
что позволяют осуществлять следующие методы:
11. Метод seekable() – выводит True, если указатель файла можно сдвинуть в другую позицию, и
False – в противном случае:
21.
Атрибуты, применяемыев работе с файлами
Атрибуты в работе с файлами — это свойства и параметры, которые используются для
управления файлами и взаимодействия с ними. Они позволяют Python получать информацию о
файле (например, доступные методы или текущие параметры), а также задавать способы
взаимодействия с файлами.
1. Атрибут name – выводит название файла:
2. Атрибут mode – выводит режим работы, в
котором был открыт файл:
3. Атрибут closed – выводит True, если файл
был закрыт, и False – в противном случае:
22.
Атрибуты, применяемыев работе с файлами
4. Атрибут encoding – выводит название
кодировки (если она указана при
открытии файла). Изменение значения
данного атрибута не представляется
возможным, это связано с тем, что он
доступен только для чтения:
Также вывести название кодировки
возможно, подключив модуль sys. При
этом
совершенно
необязательно
указывать название кодировки при
открытии файла:
5. Атрибут buffer – предоставляет
доступ к буферу, иными словами
позволяет записать последовательность
байтов
в
текстовый
поток.
Рассматриваемый атрибут доступен
только в текстовом режиме:
23.
Функции, применяемыедля манипулирования файлами
Для выполнения манипуляций над файлами в языке программирования «Python»
предназначены следующие модули:
1. Модуль shutil применяется для копирования и перемещения файлов.
1) copyfile(<копируемый файл>, <файл в
который
копируется>)
–
копирование
содержимого файла в другой файл, при этом
метаданные (например, кодировка или права
доступа) не копируются:
2) copy(<копируемый файл>, <файл в
который
копируется>)
–
копирование
содержимого файла в другой файл вместе с
правами доступа:
3) copy2(<копируемый файл>, <файл в который
копируется>) – копирование содержимого
файла в другой файл вместе с метаданными:
4)
move(<путь
к
файлу>,
<куда
перемещается>) – перемещение файла в
указанное место, при этом исходный файл
удаляется:
24.
Функции, применяемыедля манипулирования файлами
Для выполнения манипуляций над файлами в языке программирования «Python»
предназначены следующие модули:
2. Модуль os применяется для переименования и удаления файлов:
1) rename(<старое имя файла>, <новое
имя файла>) – переименование файла:
2) remove() и unlink() – удаление файла, здесь
в качестве параметра может быть указан либо
абсолютный, либо относительный путь к
файлу, в зависимости от его размещения:
25.
Функции, применяемыедля манипулирования файлами
Для выполнения манипуляций над файлами в языке программирования «Python»
предназначены следующие модули:
3. Модуль os.path:
1) exists(<путь к файлу>) – проверка
указанного пути на предмет существования:
2) getsize(<путь к файлу>) – вывод размера
файла в байтах:
3) getatime(<путь к файлу>) – вывод
количества секунд, прошедших с 1 января
1970 г. до момента последнего доступа к
файлу:
4) getctime(<путь к файлу>) – вывод
количества секунд, прошедших с 1 января
1970 г. до момента создания файла:
5) getmtime(<путь к файлу>) – вывод
количества секунд, прошедших с 1 января
1970 г. до момента последнего изменения
файла:
26.
Функции, применяемыедля преобразования пути к файлу
Выполнять преобразования пути к файлу в языке программирования «Python»
позволяют следующие функции модуля os.path:
1) abspath(<относительный путь>) –
осуществляет
преобразование
относительного пути к фалу в абсолютный:
2) isabs(<путь>) – выводит True, если путь,
указанный в параметре является абсолютным
и False – если путь, указанный в параметре
является относительным:
3) basename(<путь>) – выводит имя файла
без пути к нему:
4) dirname(<путь>) – выводит путь к папке, в
которой храниться файл:
27.
Функции, применяемыедля преобразования пути к файлу
Выполнять преобразования пути к файлу в языке программирования «Python»
позволяют следующие функции модуля os.path:
5) split(<путь>) – выводит кортеж,
состоящий из двух элементов, первым из
которых является путь к папке, в которой
храниться файл, а вторым – название файла:
6) splitdrive(<путь>) – выводит кортеж,
состоящий из двух элементов, первым из
которых является имя диска, на котором
храниться файл, а вторым – остальная часть
пути до файла:
7) splitext(<путь>) – выводит кортеж,
состоящий из двух элементов, первым из
которых является путь с названием файла, но
без указания расширения данного файла, а
вторым – расширение файла:
8) join(<путь1>, <путь2>, . . . <путьn>) –
соединяет
указанные
элементы
пути,
вставляя между ними разделители в случае
необходимости:
28.
Работа с каталогами в языкепрограммирования «Python»
При работе с каталогами применяются
функциональные возможности модулей os и os.path:
Функции модуля os:
1) getcwd() – выводит абсолютный адрес
текущего рабочего каталога, при этом,
текущим рабочим каталогом будет
каталог, из которого запускается файл, а
не каталог с исполняемым файлом:
2) chdir() – делает, указанный
параметре, каталог текущим:
в
3) mkdir() – создает новый каталог, имя
которого указанно в параметре, в текущем
рабочем каталоге:
4) rmdir() – удаляет пустой каталог, при
этом если в каталоге есть файлы или
указанный каталог не существует, то
выводится сообщение об ошибке:
5) listdir() – вывод списка объектов,
находящихся в каталоге, указанном в
параметре:
29.
Работа с каталогами в языкепрограммирования «Python»
При работе с каталогами применяются
функциональные возможности модулей os и os.path:
Модуль os.path позволяет реализовать следующий функционал:
1) isdir() – выводит True, если объект,
указанный в параметре, является
каталогом, и False – в противном
случае:
2) isfile() – выводит True, если объект,
указанный в параметре, является
файлом, и False – в противном случае:
30.
Формат CSV, JSON• CSV (от англ. Comma-Separated Values — значения, разделённые
запятыми) — текстовый формат, предназначенный для
представления табличных данных. Строка таблицы соответствует
строке текста, которая содержит одно или несколько полей,
разделенных запятыми.
• JSON (JavaScript Object Notation) — текстовый формат обмена
данными, удобный для чтения и написания как человеком, так и
компьютером. Он основан на подмножестве языка
программирования JavaScript.
• CSV и JSON — вероятно, наиболее распространенные форматы,
используемые для приема, хранения неструктурированных или
частично структурированных данных и обмена ими.
31.
CSV• CSV — текстовой формат, ориентированный на
работу с данными несложных электронных
таблиц, хранящихся в обычных тестовых
файлах.
• Модуль csv упрощает синтаксический анализ
(парсинг) CSV-файлов.
• Подключение
import csv
32.
CSV• Чтобы прочитать данные из CSV-файла,
необходимо создать объект Reader, который
обеспечивает возможность итерирования по
строкам файла:
import csv
exampleFile = open('example.csv', encoding = 'UTF-8')
exampleReader = csv.reader(exampleFile, delimiter = ';')
exampleData = list(exampleReader)
print(exampleData)
exampleFile.close()
33.
JSON• JSON (JavaScript Object Notation) — текстовый формат
обмена данными, удобный для чтения и написания как
человеком, так и компьютером. Он основан на
подмножестве языка программирования JavaScript.
• JSON основан на двух структурах данных:
– Коллекция пар ключ-значение (объект)
– Упорядоченный список значений (массив)
• Подключение
import json
34.
JSON• Файлы в формате JSON имеют несколько
преимуществ по сравнению с CSV-файлами.
– JSON поддерживает иерархические структуры, упрощая
хранение связанных данных в одном документе и
представление сложных связей.
– Большинство языков предоставляют упрощенные
библиотеки сериализации JSON или встроенную
поддержку десериализации JSON в объекты.
– JSON поддерживает списки объектов, помогая избежать
беспорядочных преобразований списков в
реляционную модель данных.
– JSON — это широко используемый формат файлов для
баз данных NoSQL, таких как MongoDB, Couchbase и
Azure Cosmos DB.
35.
JSON• Модуль json позволяет легко записывать и читать
данные в формате JSON.
• Для чтения данных в JSON-формате есть два метода:
• json.load() — метод считывает файл в формате JSON и
возвращает объект Python
• json.loads() — метод считывает строку в формате JSON
и возвращает объект Python
• Для записи информации в формате JSON также два метода:
• json.dump() — метод записывает объект Python в файл в
формате JSON
• json.dumps() — метод преобразует объект Python в
строку в формате JSON
36.
JSONimport json
# читаем json-данные из файла и преобразуем в словарь
with open('data.json', encoding = 'UTF-8') as file:
data = json.load(file)
print(data["email"])
print(data["surname"])
print(data["admin"])
print(data["friends"])
[email protected]
Иванов
False
[123, 456, 789]
37.
Задание1. Написать код, который читает файл,
считает количество строк, слов и
символов.
2. Реализовать программу для поиска всех
файлов с расширением .py в указанном
каталоге.