首页 > 其他分享 >os.makedirs 与os.mkdir的区别, 参数解释,并举例

os.makedirs 与os.mkdir的区别, 参数解释,并举例

时间:2023-09-09 21:35:02浏览次数:41  
标签:创建 makedirs mkdir path os 目录

os.makedirsos.mkdir 都是用于创建目录的函数,但它们之间有一些重要的区别。

  1. os.mkdir
  • os.mkdir 用于创建单个目录,它不会创建多层目录结构,只会创建最底层的目录。
  • 如果指定的目录路径中的上层目录不存在,那么 os.mkdir 会引发一个 FileNotFoundError 错误。

示例代码:

import os

path = './test/sub_test'

try:
    os.mkdir(path)
    print(f"目录 '{path}' 创建成功")
except FileExistsError:
    print(f"目录 '{path}' 已经存在")
except FileNotFoundError:
    print(f"上层目录不存在,无法创建 '{path}'")
  1. os.makedirs
  • os.makedirs 用于递归创建多层目录结构,如果指定的目录路径中的上层目录不存在,它会自动创建这些上层目录。
  • 可以使用 exist_ok=True 参数来指定如果目录已经存在是否报错,如果设置为 True,目录已经存在时不会引发错误。

示例代码:

import os

path = './test/sub_test'

try:
    os.makedirs(path)
    print(f"目录 '{path}' 创建成功")
except FileExistsError:
    print(f"目录 '{path}' 已经存在")
except FileNotFoundError:
    print(f"上层目录不存在,无法创建 '{path}'")

总结:

  • 如果你需要创建多层目录结构或者不确定上层目录是否存在,应该使用 os.makedirs
  • 如果你只需要创建单个目录且确定上层目录已经存在,可以使用 os.mkdir

请根据你的需求选择合适的函数来创建目录。

标签:创建,makedirs,mkdir,path,os,目录
From: https://blog.51cto.com/u_16055028/7420827

相关文章

  • C++ #include <iostream> 和 #include <iostream.h>的区别
    #include和#include<iostream.h>区别1.#include是C++调用头文件的使用方式,这种情况下需要加上usingnamespacestd;指定命名空间2.#include<iostream.h>C++保留了C的这种写法,这种不需要增加命名空间指定#include<stdio.h>和#include"stdio.h"区别-#include<stdio......
  • oss无sdk上传文件的bash脚本
    前言:有时候需要做一些上传的操作,这边简单的记录下这个bash脚本需要依赖echo、file、awk、openssl、curl,上传的时候需要注意下bash模版#!/bin/bashhost="oss-cn-hangzhou.aliyuncs.com"bucket="bucket"#BucketNameid="id"#AccessKeyIdkey="key"#AccessKeySecretossh......
  • Eureka和Nacos
    Eureka是什么Eureka是SpringCloud微服务框架默认的也是推荐的服务注册中心,由Netflix公司与2012将其开源出来,Eureka基于REST服务开发,主要用于实现AWS云的中服务定位,以实现中间层服务器的负载均衡和故障转移,遵循着CAP理论中的A(可用性)P(分区容错性)Eureka详解一个Eurek......
  • 1-centOS7搭建伪分布式Hadoop
    前言:虚拟机快照的使用VMwareWorkstation软件可以用快照进行迅速的虚拟机状态的切换※.类似于虚拟机备份,可以使用备份进行快速恢复。比如没安装jdk之前拍摄快照来备份※.若jdk没安装好或者jdk环境变量配置的有问题,可以用安装之前的快照快速恢复虚拟机1.拍摄快照:2.恢复......
  • centOS安装配置go1.18环境
    今天在centOS系统宝塔面板下创建Go项目,打算安装Go环境。Gin、Gorm中的一些新语言特性似乎要求go1.18及以上,因此我安装并记录下了以下配置过程。卸载原有旧版本(没有则不做)sudorm-rf/usr/local/go下载go对应版本二进制包wgethttps://studygolang.com/dl/golang/go1.18.......
  • Nacos实战(19)-Nacos健康检查机制:保障你的服务稳定运行!
    0前言注册中心不应仅提供服务注册和发现功能,还应保证对服务可用性监测,对不健康的服务和过期的进行标识或剔除,维护实例的生命周期,以保证客户端尽可能的查询到可用的服务列表。因此本文介绍Nacos注册中心的健康检查机制。1注册中心的健康检查机制知道⼀个服务是否还健康的方式:客户......
  • CentOS7.5报java: error while loading shared libraries: libjli.so: cannot open sh
    1.问题描述:CentOS版本:CentOS-7.5-x86_64-DVD-1804jdk版本:jdk-8u161-linux-x64.tar配置jdk时,执行java报错java:errorwhileloadingsharedlibraries:libjli.so:cannotopensharedobjectfile:Nosuchfileordirectory 2.解决方法:发现是CentOS7.5不支持jdk-8u161......
  • 【9月摸鱼计划】mos开关,下降沿有尖峰,是不是寄生电容放电太慢了,加个反向肖特基会不会有
    MOS开关的下降沿出现尖峰,可能是由于寄生电容放电过慢或其他电路因素的影响。添加反向肖特基二极管可能会对改善尖峰有所作用,但具体效果需要考虑以下因素:寄生电容:寄生电容是电路中不可避免的部分,它们会在电压变化时进行充电和放电。如果寄生电容较大,放电时间会变长,从而导致尖峰的出......
  • 安装CentOS7虚拟机
    1、前期工作下载CentOS7镜像:CentOS-7-x86_64-DVD-2009.iso安装虚拟机工具:VirtualBox2、新建虚拟机2.1、设置新建虚拟机的名称、安装路径、类型及版本注意:CentOSLinux的发行版本是通过编译RedHat,Inc公开提供的RedHat企业级Linux开源代码而产生的;所以这......
  • 【RabbitMQ】服务启动成功,无法访问localhost_15672(RabbitMQ Management)
    问题描述RabbitMQ服务已经启动成功,已经安装rabbitmq_management插件,无法访问RabbitMQManagement(http://localhost:15672/)。原因分析15672端口被MicrosoftEdge占用。解决方案打开cmd终端,输入指令:netstat-ano|findstr15672TCP127.0.0.1:8323127.0.0.1:15672......