Текущий каталог в Python — управление и примеры
В этом уроке вы узнаете, как управлять каталогами в Python с помощью модуля os.
- Получение текущего рабочего каталога
- Объединение и разделение путей
- Проверка, является ли путь каталогом
- Создание нового каталога
- Переименование
- Удаление
- Рекурсивное перемещение по каталогу
Получение текущего рабочего каталога
Текущий рабочий каталог — это каталог, в котором выполняется сценарий Python. Чтобы получить текущий рабочий каталог, используйте os.getcwd() следующим образом:
import os cwd = os.getcwd() print(cwd)
Чтобы изменить текущий рабочий каталог, используйте функцию os.chdir():
import os os.chdir('/script') cwd = os.getcwd() print(cwd)
Объединение и разделение путей
Чтобы программа работала на всех платформах, включая Windows, Linux и macOS, вам необходимо использовать независимые от платформы пути к файлам и каталогам.
Python предоставляет вам подмодуль os.path, который содержит несколько полезных функций и констант для объединения и разделения путей.
Функция join() объединяет компоненты пути и возвращает путь с соответствующим разделителем. Например, используется обратная косая черта(\) в Windows и прямая косая черта(/) в macOS или Linux.
Функция Split() разбивает путь на компоненты без разделителя пути. Вот пример использования функций join() и Split():
import os fp = os.path.join('temp', 'python') print(fp) # temp\python(on Windows) pc = os.path.split(fp) print(pc) #('temp', 'python')
Проверка, является ли путь каталогом
Чтобы проверить, существует ли путь и является ли каталогом, вы можете использовать функции os.path.exists() и os.path.isdir(). Например:
import os dir = os.path.join("C:\\", "temp") print(dir) if os.path.exists(dir) or os.path.isdir(dir): print(f'The {dir} is a directory')
Создание нового каталога
Чтобы создать новый каталог, используйте функцию os.mkdir(). И вам всегда следует сначала проверять, существует ли каталог, прежде чем создавать новый.
В следующем примере создается новый каталог с именем python в каталоге c:\temp.
import os dir = os.path.join("C:\\", "temp", "python") if not os.path.exists(dir): os.mkdir(dir)
Переименование
Чтобы переименовать каталог, используйте функцию os.rename():
import os oldpath = os.path.join("C:\\", "temp", "python") newpath = os.path.join("C:\\", "temp", "python3") if os.path.exists(oldpath) and not os.path.exists(newpath): os.rename(oldpath, newpath) print("'{0}' was renamed to '{1}'".format(oldpath, newpath))
Удаление
Чтобы удалить каталог, используйте функцию os.rmdir() следующим образом:
import os dir = os.path.join("C:\\","temp","python") if os.path.exists(dir): os.rmdir(dir) print(dir + ' is removed.')
Рекурсивное перемещение по каталогу
Функция os.walk() позволяет вам рекурсивно перемещаться по каталогу. Функция os.walk() возвращает корневой каталог, подкаталоги и файлы.
В следующем примере показано, как распечатать все файлы и каталоги в каталоге c:\temp:
import os path = "c:\\temp" for root, dirs, files in os.walk(path): print("{0} has {1} files".format(root, len(files)))