Python - удобный язык, который часто используется для написания сценариев, анализа данных и веб-разработки.
В этой статье мы рассмотрим, как читать и записывать файлы с помощью Python.
Файлы и пути к файлам
У файла есть имя для ссылки на файл. У него также есть путь для определения местоположения файла.
Путь состоит из папки, они могут быть вложенными и образуют путь.
Обратная косая черта в Windows и прямая косая черта в macOS и Linux
В Windows путь состоит из обратной косой черты. Во многих других операционных системах, таких как macOS и Linux, путь состоит из косых черт.
Стандартная pathlib
библиотека Python знает разницу и может соответствующим образом отсортировать их. Следовательно, мы должны использовать его для построения путей, чтобы наша программа работала везде.
Например, мы можем импортировать pathlib
следующим образом и создать объект Path
следующим образом:
from pathlib import Path path = Path('foo', 'bar', 'foo.txt')
После выполнения кода path
должен быть Path
объектом, подобным следующему, если мы запускаем указанную выше программу в Linux или macOS:
PosixPath('foo/bar/foo.txt')
Если мы запустим приведенный выше код в Windows, мы получим объект WindowsPath
вместо объекта PosixPath
.
Использование оператора / для объединения путей
Мы можем использовать оператор /
для объединения путей. Например, мы можем переписать путь, который у нас был, в следующий код:
from pathlib import Path path = Path('foo')/'bar'/'foo.txt'
Тогда мы получим тот же результат, что и раньше.
Это также будет работать в Windows, macOS и Linux, поскольку Python соответствующим образом отсортирует путь.
Чего нам не следует использовать, так это метода join
строки, потому что разделитель путей отличается в Windows и других операционных системах.
Например:
path = '/'.join(['foo', 'bar', 'foo.txt'])
не будет работать в Windows, так как путь имеет косую черту.
Текущий рабочий каталог
Мы можем получить текущий рабочий каталог (CWD), который является каталогом, в котором запущена программа.
Мы можем изменить CWD с помощью функции os.chdir
и получить текущий CWD с помощью функции Path.cwd
.
Например, мы можем написать:
from pathlib import Path import os print(Path.cwd()) os.chdir(Path('foo')/'bar') print(Path.cwd())
Тогда получаем:
/home/runner/AgonizingBasicSpecialist /home/runner/AgonizingBasicSpecialist/foo/bar
как выход.
Как мы видим, chdir
изменил текущий рабочий каталог, так что мы можем управлять файлами в каталогах, отличных от тех, в которых работает программа.
Домашний каталог
Домашний каталог - это корневой каталог папки профиля учетной записи пользователя.
Например, мы можем написать следующее:
from pathlib import Path path = Path.home()
Тогда значение path
будет чем-то вроде PosixPath(‘/home/runner’)
.
Абсолютные и относительные пути
Абсолютный путь - это путь, который всегда начинается с корневой папки. Относительный - это путь относительно текущего рабочего каталога программы.
Например, в Windows C:\Windows
- это абсолютный путь. Относительный путь - это что-то вроде .\foo\bar
. Он начинается с точки, а foo
находится внутри текущего рабочего каталога.
Создание новых папок с помощью функции os.makedirs ()
Мы можем создать новую папку с функцией os.makedirs
.
Например, мы можем написать:
from pathlib import Path Path(Path.cwd()/'foo').mkdir()
Затем мы создаем каталог foo
внутри нашего текущего рабочего каталога.
Обработка абсолютных и относительных путей
Мы можем проверить, является ли путь абсолютным путем с помощью метода is_absolute
.
Например, мы можем написать:
from pathlib import Path is_absolute = Path.cwd().is_absolute()
Тогда мы должны увидеть is_absolute
равным True
, поскольку Path.cwd()
возвращает абсолютный путь.
Мы можем вызвать os.path.abspath
, чтобы вернуть строку с абсолютным путем переданного нами аргумента path
.
Например, учитывая, что у нас есть каталог foo
в текущем рабочем каталоге, мы можем написать:
from pathlib import Path import os path = os.path.abspath(Path('./foo'))
чтобы получить абсолютный путь к папке foo
.
У нас должно получиться что-то вроде:
'/home/runner/AgonizingBasicSpecialist/foo'
как значение path
.
os.path.isabs(path)
- это метод, который возвращает True
- это абсолютный путь.
Метод os.path.relpath(path, start)
вернет строку относительного пути от пути start
до path
.
Если start
не указан, то текущий рабочий каталог используется как начальный путь.
Например, если у нас есть папка /foo/bar
в нашем домашнем каталоге, то мы можем получить путь ./foo/bar
относительно домашнего каталога, написав:
from pathlib import Path import os path = os.path.relpath(Path.home(), Path('./foo')/'bar')
Тогда path
имеет значение ‘../../..’
.
Заключение
Мы можем использовать модули path
и os
для построения путей и управления ими.
Кроме того, мы также можем использовать /
с объектами Path
для создания пути, который работает со всеми операционными системами.
Мы также можем указать пути к функции Path
для построения путей.
Python также имеет методы для проверки относительных и абсолютных путей, а модуль os
может создавать относительные пути из двух абсолютных путей.
Примечание от Python In Plain English
Мы всегда заинтересованы в продвижении качественного контента. Если у вас есть статья, которую вы хотите отправить в какую-либо из наших публикаций, отправьте нам электронное письмо по адресу [email protected] с вашим именем пользователя Medium, и мы добавим вас в качестве автора.