Python 创建文件夹

在 Python 中,创建文件夹可以使用以下 os 模块 的 2 个函数来实现。

  • os.mkdir() 函数。
  • os.makedirs() 函数。

提示: 大部分情况下,“文件夹” 也叫做 “目录”,小伙伴们要清楚两者指的是同一个意思。

使用 os.mkdir() 创建文件夹

在 Python 中,我们可以使用 os 模块的 mkdir() 函数来创建文件夹。

语法:

os.mkdir(path)

说明:

参数 path 是文件夹的完整路径(包含文件名),它可以是相对路径,也可以是绝对路径。更多关于路径的信息,请查看:Python 文件路径

对于 os.mkdir(),小伙伴们要清楚以下 2 点。

  • 如果指定 path 已存在(即文件夹已存在),那么 os.mkdir() 会引发 FileExistsError 异常。
  • 如果指定 path 缺少中间级目录,os.mkdir() 并不会创建这些中间级目录,而是直接报错提示 “系统找不到指定的路径”。

示例 1:os.mkdir() 创建文件夹

import os
 
# 指定要创建的文件夹路径
folder_path = r'D:\newfolder'
 
try:
    os.mkdir(folder_path)
    print('创建成功!')
except FileExistsError:
    print('该文件夹已存在!')
except Exception as e:
    print('发生错误:', str(e))

分析:

上面程序运行之后,可以在 D 盘目录下多了一个名为 “newfolder” 的文件夹。

使用 os.mkdir() 函数创建文件夹时,如果文件夹已存在,则会抛出 FileExistsError 异常。我们可以使用 try except 语句来处理异常。

如果把文件夹路径修改如下,其中 “lvye” 这个中间级目录是不存在的。

folder_path = r'D:\lvye\newfolder'

再次运行后会直接报错,如下所示。

 [WinError 3] 系统找不到指定的路径 : 'D:\\lvye\\newfolder'

使用 os.makedirs() 创建文件夹

在 Python 中,我们还可以使用 os 模块的 makedirs() 函数来创建文件夹。

语法:

os.makedirs(path)

说明:

参数 path 是文件夹的完整路径(包含文件名),它可以是相对路径,也可以是绝对路径。对于 os.makedirs(),小伙伴们要清楚以下 2 点。

  • 如果指定 path 已存在(即文件夹已存在),那么 os.makedirs() 同样会引发 FileExistsError 异常。
  • 如果指定 path 缺少中间级目录,os.makedirs() 会自动创建这些中间级目录。

注意: os.mkdir() 和 os.makedirs() 这 2 个函数的语法几乎是一样的,它们之间的区别在于:如果中间目录不存在,os.mkdir() 会直接报错,而 os.makedirs() 会递归创建。

示例 2:os.makedirs() 创建文件夹

import os
 
# 指定要创建的文件夹路径
folder_path = r'D:\newfolder'
 
try:
    os.makedirs(folder_path)
    print('创建成功!')
except FileExistsError:
    print('该文件夹已存在!')
except Exception as e:
    print('发生错误:', str(e))

分析:

上面程序运行之后,可以在 D 盘目录下多了一个名为 “newfolder” 的文件夹。

这里为了防止 “文件夹已存在” 导致报错,我们写了一长串的 try...except 语句。其实,os.makedirs() 提供了一个极其强大的隐藏参数:exist_ok。

当我们设置 exist_ok=True 时,如果文件夹不存在,它会自动创建;如果文件夹已经存在,它也不会报错,而是当作无事发生自动跳过!

# 推荐写法
import os
folder_path = r'D:\newfolder'

# 只要加上 exist_ok=True,再也不用担心文件夹已存在会报错了!
os.makedirs(folder_path, exist_ok=True)
print('执行完毕!')

提示: 除了 os 模块之外,还可以使用 pathlibshutil 等模块来创建文件夹。不过其他模块操作起来远不如 os 模块方便。

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号