В этой статье я хочу показать на примерах работу с питоном и файловой системой.  Это очень важный аспект, без работы с файлами не обходится ни один язык программирования. Для работы с файловой системой в Python используют модули os, os.path и shututil, а для операций с файлами – встроенные функции open(), close(), read(), readline(), write() и т. д. Одну и ту же операцию можно производить несколькими способами.

Файлы

Создание файла

В Python также существует режим (атрибут)  «x» или «‘xb«. «b» — означает бинарный файл.  В этом режиме проверяется, есть ли файл. Если файл с определенным именем уже существует, он не будет создан. В режиме 'w' файл создается заново, старый при этом теряется.

Без 'b' создается текстовый файл, представляющий собой поток символов. С ‘b‘ — файл, содержащий поток байтов (двоичный).

  • ‘r’ — открывает файл только для чтения (по умолчанию)
  • ‘w’ — открывает файл только для записи (удаляет любой существующий файл)
  • ‘x’ — открывает файл только для создания, возвращает ошибку, если файл существует
  • ‘a’ — открывает файл для добавления в конец, создает файл, если он не существует
  • ‘b’ — открывает файл в двоичном режиме
  • ‘t’ — открывает файл в текстовом режиме (по умолчанию)
Чтение

Если файл был открыт в текстовом режиме, то метод read() возвращает строку. В случае бинарного режима возвращается объект типа bytes.

Метод readline() позволяет получать данные построчно.

Методу read() может быть передан один аргумент, обозначающий количество символов (если файл был открыт как текстовый) или байт (если файл был открыт как бинарный) для чтения.

Для построчного чтения данных из файла рекомендуется использовать цикл for:

Метод readlines() считывает все строки и помещает их в список.

Запись

Закрыть

С помощью closed (не константа, а так называемый дескриптор, или описатель, данных) проверяют, закрыт файл или нет.

Удалить

Копировать

библиотека shutil включает вызов метода copyfile() . Метод принимает два параметра, один из которых является исходным путем файла, а другой — конечным путем файла.

второй вариант

Перемещение

еще один способ, функцию os.replace() можно использовать для перемещения файлов или каталогов:

Стоит обратить внимание, что это перезапишет путь, поэтому если в папке folder уже есть файл с таким же именем (renamed-text.txt), он будет перезаписан.

Переименовать

Исключения

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

Перехватить возникшее исключение можно с помощью конструкции try-except. Схематично ниже:

Папки

Вывод текущей директории

Для получения текущего рабочего каталога используется os.getcwd():

os.getcwd() возвращает строку в Юникоде, представляющую текущий рабочий каталог

Создание папки

Если запустить ее еще раз, будет вызвана ошибка FileExistsError, потому что такая папка уже есть. Для решения проблемы нужно запускать команду только в том случае, если каталога с таким же именем нет. Этого можно добиться следующим образом:

Функция os.path.isdir() вернет True, если переданное имя ссылается на существующий каталог.

Изменение директории

Создание вложенных папок

Удаление директорий

Для удаления каталогов рекурсивно необходимо использовать os.removedirs():

Проверяем, существует файл или каталог

в качестве аргумента можно использовать как имя файла, так и имя директории

Содержимое директории

возвращает список содержимого:

В некоторых случаях нужно что-то более продвинутое — например, поиск всех CSV-файлов в каталоге «sample_data». В этом случае самый простой способ — использовать встроенную библиотеку glob:

 

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *