- Python Create Directory | os.mkdir() Method
- What is the os.mkdir() Method?
- Example 1: How to Create a Directory Using os.mkdir() Method?
- Example 2: How to Handle Directory Already Exists Error Using os.mkdir() Method?
- Conclusion
- 8 команд для Python по работе с файлами и файловой системой, которые обязательно нужно знать
- Показать текущий каталог
- Проверяем, существует файл или каталог
- Объединение компонентов пути
- Создание директории
- Показываем содержимое директории
- Перемещение файлов
- Копирование файлов
- Удаление файлов и папок
Python Create Directory | os.mkdir() Method
In many programming languages, the “mkdir” command is used to create a new directory. In Python, the OS module interacts with the operating system and provides different functions like creating and deleting file directories. The “mkdir” method is used to create the directory by declaring “os.mkdir()” in Python script with its “path name” and “numeric mode” value inside the argument. We can create temporary and permanent directories using a different module in Python code.
This write-up will explain a detailed understanding of the Python create directory method “os.mkdir()”. The outcomes are as follows:
What is the os.mkdir() Method?
The “os.mkdir()” method creates the new directory file in Python. This method is obtained from the os module which has various functions like creating or deleting a directory. The “os.mkdir()” method shows an error when the directory file already exists in the same location.
The syntax of “os.mkdir()” is shown below:
os.mkdir(path, mode =0o777, *, dir_fd = none)
- “Path”: Specifies the location of a new directory. The value can be any bytes object or string.
- “Mode”: Allows or permits setting the new directory. This value will be an integer and not necessary to define. The default value of “Mode” is “0o777”.
- “dir_fd”: A file descriptor referred to as the directory. The “dir_fd” parameter default value is “None”.
Let’s see how the os.mkdir() method works:
Example 1: How to Create a Directory Using os.mkdir() Method?
The “os.mkdir()” method creates a new directory by only specifying the path name inside the parentheses. The “mode” value and other parameters are optional to define inside the “os.mkdir()” method. Let’s understand the concept by following code:
# Create directory using os.mkdir() method import os directory_path = "F:\itslinuxfoss\Documents/newfile" os.mkdir(directory_path) print("The Directory '% s' created" % directory_path)
- Firstly, “os module” is imported in the program.
- Secondly, the path name is specified inside the quotation marks and saved in a variable named “directory_path”.
- The “os.mkdir()” method takes the path variable inside the parenthesis and creates a new directory named “new file”
Note: The “/” forward slash used before the file named “newfile” while defining the path is mandatory to use to create a new Directory.
The above console output shows that a new directory is created.
In the above snippet, the directory named “newfile” is created.
Example 2: How to Handle Directory Already Exists Error Using os.mkdir() Method?
Sometimes, when we create a new directory, an error like “file name already exists” or “file name error” occurs in the program. These errors are resolved by creating a new file with a different directory name or removing duplicates of the existing one. Let’s see an example below where this error is handled and removed using the “try-except” block.
import os directory_path = 'F:\itslinuxfoss\Documents/newfile' try: os.mkdir(directory_path) except OSError as error: print('File already exist') print('creating new path') new_path = 'F:\itslinuxfoss\Documents/newfile1' os.mkdir(new_path)
- The “os module” is imported.
- The directory file name and location is specified and stored in a variable named “directory_path”.
- The “try-except” block is used in the above code to handle the error.
- “Try” block creates the directory if it is new and not present in the directory path.
- “Except” block runs when the file already exists in the specified path. A new path is defined in the “except” block with a new directory name.
Note: The “/” forward slash used before the file named “newfile” while defining the path is mandatory to use to create a new Directory.
In the above output, a new directory is created by changing the name.
The above snippet shows that the new directory named “newfile1” is created.
That’s all from this Python tutorial.
Conclusion
In Python, the “os.mkdir()” method is used to create new directories. The “os module” in Python provides functionality in which the python script can interact with the operating system and perform some operations, like creating a new directory or deleting the directory. The “already file exists error” can also be removed with the help of the “try-except” block and the “os.mkdir()” method.
This tutorial has provided a detailed understanding of the “os.mkdir()” method with numerous examples.
TUTORIALS ON LINUX, PROGRAMMING & TECHNOLOGY
8 команд для Python по работе с файлами и файловой системой, которые обязательно нужно знать
Python становится все популярнее благодаря относительной простоте изучения, универсальности и другим преимуществам. Правда, у начинающих разработчиков нередко возникают проблемы при работе с файлами и файловой системой. Просто потому, что они знают не все команды, которые нужно знать.
Эта статья предназначена как раз для начинающих разработчиков. В ней описаны 8 крайне важных команд для работы с файлами, папками и файловой системой в целом. Все примеры из этой статьи размещены в Google Colab Notebook (ссылка на ресурс — в конце статьи).
Показать текущий каталог
Самая простая и вместе с тем одна из самых важных команд для Python-разработчика. Она нужна потому, что чаще всего разработчики имеют дело с относительными путями. Но в некоторых случаях важно знать, где мы находимся.
Относительный путь хорош тем, что работает для всех пользователей, с любыми системами, количеством дисков и так далее.
Так вот, для того чтобы показать текущий каталог, нужна встроенная в Python OS-библиотека:
Ее легко запомнить, так что лучше выучить один раз, чем постоянно гуглить. Это здорово экономит время.
Имейте в виду, что я использую Google Colab, так что путь /content является абсолютным.
Проверяем, существует файл или каталог
Прежде чем задействовать команду по созданию файла или каталога, стоит убедиться, что аналогичных элементов нет. Это поможет избежать ряда ошибок при работе приложения, включая перезапись существующих элементов с данными.
Функция os.path.exists () принимает аргумент строкового типа, который может быть либо именем каталога, либо файлом.
В случае с Google Colab при каждом запуске создается папка sample_data. Давайте проверим, существует ли такой каталог. Для этого подойдет следующий код:
Эта же команда подходит и для работы с файлами:
Если папки или файла нет, команда возвращает false.
Объединение компонентов пути
В предыдущем примере я намеренно использовал слеш «/» для разделителя компонентов пути. В принципе это нормально, но не рекомендуется. Если вы хотите, чтобы ваше приложение было кроссплатформенным, такой вариант не подходит. Так, некоторые старые версии ОС Windows распознают только слеш «\» в качестве разделителя.
Но не переживайте, Python прекрасно решает эту проблему благодаря функции os.path.join (). Давайте перепишем вариант из примера в предыдущем пункте, используя эту функцию:
os.path.exists(os.path.join('sample_data', 'README.md'))
Создание директории
Ну а теперь самое время создать директорию с именем test_dir внутри рабочей директории. Для этого можно использовать функцию
os.mkdir():
Давайте посмотрим, как это работает на практике.
Если же мы попытаемся создать каталог, который уже существует, то получим исключение.
Именно поэтому рекомендуется всегда проверять наличие каталога с определенным названием перед созданием нового:
if not os.path.exists('test_dir'): os.mkdir('test_dir')
Еще один совет по созданию каталогов. Иногда нам нужно создать подкаталоги с уровнем вложенности 2 или более. Если мы все еще используем os.mkdir (), нам нужно будет сделать это несколько раз. В этом случае мы можем использовать os.makedirs (). Эта функция создаст все промежуточные каталоги так же, как флаг mkdir -p в системе Linux:
os.makedirs(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))
Показываем содержимое директории
Еще одна полезная команда — os.listdir(). Она показывает все содержимое каталога.
Команда отличается от os.walk (), где последний рекурсивно показывает все, что находится «под» каталогом. os.listdir () намного проще в использовании, потому что просто возвращает список содержимого:
В некоторых случаях нужно что-то более продвинутое — например, поиск всех CSV-файлов в каталоге «sample_data». В этом случае самый простой способ — использовать встроенную библиотеку glob:
from glob import globlist(glob(os.path.join('sample_data', '*.csv')))
Перемещение файлов
Самое время попробовать переместить файлы из одной папки в другую. Рекомендованный способ — еще одна встроенная библиотека shutil.
Сейчас попробуем переместить все CSV-файлы из директории «sample_data» в директорию «test_dir». Ниже — пример кода для выполнения этой операции:
import shutilfor file in list(glob(os.path.join('sample_data', '*.csv'))): shutil.move(file, 'test_dir')
Кстати, есть два способа выполнить задуманное. Например, мы можем использовать библиотеку OS, если не хочется импортировать дополнительные библиотеки. Как os.rename, так и os.replace подходят для решения задачи.
Но обе они недостаточно «умные», чтобы позволить перемесить файлы в каталог.
Чтобы все это работало, нужно явно указать имя файла в месте назначения. Ниже — код, который это позволяет сделать:
for file in list(glob(os.path.join('test_dir', '*.csv'))): os.rename( file, os.path.join( 'sample_data', os.path.basename(file) ))
Здесь функция os.path.basename () предназначена для извлечения имени файла из пути с любым количеством компонентов.
Другая функция, os.replace (), делает то же самое. Но разница в том, что os.replace () не зависит от платформы, тогда как os.rename () будет работать только в системе Unix / Linux.
Еще один минус — в том, что обе функции не поддерживают перемещение файлов из разных файловых систем, в отличие от shutil.
Поэтому я рекомендую использовать shutil.move () для перемещения файлов.
Копирование файлов
Аналогичным образом shutil подходит и для копирования файлов по уже упомянутым причинам.
Если нужно скопировать файл README.md из папки «sample_data» в папку «test_dir», поможет функция shutil.copy():
shutil.copy( os.path.join('sample_data', 'README.md'), os.path.join('test_dir') )
Удаление файлов и папок
Теперь пришел черед разобраться с процедурой удаления файлов и папок. Нам здесь снова поможет библиотека OS.
Когда нужно удалить файл, нужно воспользоваться командой os.remove():
os.remove(os.path.join('test_dir', 'README(1).md'))
Если требуется удалить каталог, на помощь приходит os.rmdir():
os.rmdir(os.path.join('test_dir', 'level_1', 'level_2', 'level_3'))
Однако он может удалить только пустой каталог. На приведенном выше скриншоте видим, что удалить можно лишь каталог level_3. Что если мы хотим рекурсивно удалить каталог level_1? В этом случае зовем на помощь shutil.
Функция shutil.rmtree() сделает все, что нужно:
shutil.rmtree(os.path.join('test_dir', 'level_1'))
Пользоваться ею нужно с осторожностью, поскольку она безвозвратно удаляет все содержимое каталога.
Собственно, на этом все. 8 важных операций по работе с файлами и каталогами в среде Python мы знаем. Что касается ссылки, о которой говорилось в анонсе, то вот она — это Google Colab Network с содержимым, готовым к запуску.