pin_drop当前位置:知识文库 ❯ 图文
os.mkdir创建单层目录 - Python文件夹创建操作教程
一、函数概述
os.mkdir() 函数用于创建一个新目录。它只能创建单层目录,如果父目录不存在则会报错。如需递归创建多层目录,请使用 os.makedirs()。
二、语法与参数
语法
代码示例
os.mkdir(path, mode=0o777, *, dir_fd=None)参数说明
返回值
无返回值。如果目录已存在或父目录不存在,将抛出相应异常。
三、基本用法示例
创建单个目录
代码示例
import os
new_dir = 'test_folder'
if not os.path.exists(new_dir):
os.mkdir(new_dir)
print(f"目录 '{new_dir}' 创建成功")
else:
print(f"目录 '{new_dir}' 已存在")输出:
代码示例
目录 'test_folder' 创建成功小贴士
创建目录前建议先用 os.path.exists() 检查目录是否已存在,避免重复创建导致 FileExistsError 异常。
四、使用绝对路径创建目录
代码示例
import os
new_dir = os.path.join(os.getcwd(), 'logs')
try:
os.mkdir(new_dir)
print(f"目录创建成功: {new_dir}")
except FileExistsError:
print(f"目录已存在: {new_dir}")输出:
代码示例
目录创建成功: C:\Users\example\project\logs五、创建目录时的常见错误
代码示例
import os
# 错误1:父目录不存在
try:
os.mkdir('parent/child/grandchild')
except FileNotFoundError as e:
print(f"错误: 父目录不存在 - {e}")
# 错误2:目录已存在
try:
os.mkdir('existing_dir')
except FileExistsError as e:
print(f"错误: 目录已存在 - {e}")输出:
代码示例
错误: 父目录不存在 - [Errno 2] No such file or directory: 'parent/child/grandchild'常见异常类型:
-
FileNotFoundError:父目录不存在
-
FileExistsError:目标目录已存在
-
PermissionError:没有创建目录的权限
六、实际应用场景
-
场景1:在项目初始化时创建必要的目录结构(如logs、data、output等)
-
场景2:在文件下载程序中,按日期创建目录存储下载文件
-
场景3:在数据处理脚本中,为每个处理批次创建独立的输出目录
七、注意事项
注意:os.mkdir()只能创建单层目录,父目录必须存在。
注意:如果目录已存在,会抛出FileExistsError。
注意:mode参数在Windows上基本无效,仅在Unix系统上设置目录权限。
八、创建目录方法对比
九、小结
-
os.mkdir()用于创建单层目录,父目录必须存在
-
创建前应检查目录是否已存在,避免FileExistsError
-
如需创建多层嵌套目录,使用os.makedirs()更方便
十、练习题
练习1
编写程序,在当前目录下创建一个名为'my_project'的目录,并在其中创建'src'和'docs'子目录。
练习2
编写一个安全创建目录的函数,如果目录已存在则跳过,如果父目录不存在则使用os.makedirs()创建。
常见问题
os.mkdir()和os.makedirs()有什么区别?
os.mkdir()只能创建单层目录,父目录必须存在;而os.makedirs()可以递归创建多层目录,父目录不存在时会自动创建。例如创建'a/b/c',os.mkdir()会失败,而os.makedirs()会成功。
mode参数的作用是什么?
mode参数用于设置目录的权限(Unix系统上有效),默认值为0o777(rwxrwxrwx)。实际权限会受到系统umask的影响。在Windows上此参数基本被忽略,目录权限由系统默认设置。
如何批量创建多个目录?
可以使用循环遍历目录列表,逐个调用os.mkdir()。或者使用os.makedirs()配合循环,也可以使用pathlib模块的Path.mkdir()方法,代码更简洁。
os.mkdir()可以创建带中文名称的目录吗?
可以。Python 3默认使用Unicode字符串,完全支持中文目录名。只需确保文件系统的编码支持中文即可,现代操作系统(Windows、Linux、macOS)都支持Unicode路径。
本文涉及AI创作
内容由AI创作,请仔细甄别