最直接有效的方式是使用os.makedirs()或pathlib.Path.mkdir(),两者均支持创建多级目录并处理已存在情况。推荐使用pathlib,因其面向对象、跨平台且语法简洁,结合parents=True和exist_ok=True可安全实现幂等创建。

在Python中创建文件夹,最直接有效的方式是利用其内置的
os
pathlib
pathlib
Python提供了两种主要的、且都非常可靠的方法来创建文件夹:
os
pathlib
使用 os
os
立即学习“Python免费学习笔记(深入)”;
创建单个目录 (os.mkdir
os.mkdir()
import os
folder_name = "my_new_folder_os"
try:
os.mkdir(folder_name)
print(f"文件夹 '{folder_name}' 创建成功。")
except FileExistsError:
print(f"文件夹 '{folder_name}' 已经存在。")
except OSError as e:
print(f"创建文件夹时发生错误: {e}")这里需要注意的是,如果
my_new_folder_os
os.mkdir()
FileExistsError
try-except
创建多级目录 (os.makedirs
os.makedirs()
import os
nested_folder_path = "parent_folder_os/child_folder_os/grandchild_folder_os"
try:
os.makedirs(nested_folder_path)
print(f"多级文件夹 '{nested_folder_path}' 创建成功。")
except FileExistsError:
print(f"多级文件夹 '{nested_folder_path}' 已经存在。")
except OSError as e:
print(f"创建多级文件夹时发生错误: {e}")
# 更安全的做法,避免FileExistsError
safe_nested_path = "another_parent_os/another_child_os"
os.makedirs(safe_nested_path, exist_ok=True)
print(f"使用 exist_ok=True 创建或确保文件夹 '{safe_nested_path}' 存在。")os.makedirs()
exist_ok=True
FileExistsError
使用 pathlib
pathlib
创建单个目录 (Path.mkdir
pathlib
Path
mkdir()
from pathlib import Path
folder_name_pl = Path("my_new_folder_pathlib")
try:
folder_name_pl.mkdir()
print(f"文件夹 '{folder_name_pl}' 创建成功。")
except FileExistsError:
print(f"文件夹 '{folder_name_pl}' 已经存在。")
except OSError as e:
print(f"创建文件夹时发生错误: {e}")和
os.mkdir()
Path.mkdir()
FileExistsError
创建多级目录 (Path.mkdir
parents
exist_ok
pathlib
mkdir()
parents=True
exist_ok=True
from pathlib import Path
nested_folder_path_pl = Path("parent_folder_pl/child_folder_pl/grandchild_folder_pl")
try:
nested_folder_path_pl.mkdir(parents=True)
print(f"多级文件夹 '{nested_folder_path_pl}' 创建成功。")
except FileExistsError:
print(f"多级文件夹 '{nested_folder_path_pl}' 已经存在。")
except OSError as e:
print(f"创建多级文件夹时发生错误: {e}")
# 更安全的做法,使用 parents=True 和 exist_ok=True
safe_nested_path_pl = Path("another_parent_pl/another_child_pl")
safe_nested_path_pl.mkdir(parents=True, exist_ok=True)
print(f"使用 parents=True 和 exist_ok=True 创建或确保文件夹 '{safe_nested_path_pl}' 存在。")这里的
parents=True
os.makedirs()
exist_ok=True
pathlib
os
pathlib
在我看来,
os
pathlib
os
pathlib
Path
核心差异:
os
pathlib
Path
os
os.path.join
pathlib
Path
pathlib
Path
Path(".").joinpath("sub", "folder").mkdir()os
pathlib
pathlib
最佳实践:
pathlib
os
os
pathlib
\
/
exist_ok=True
os.makedirs
Path.mkdir
parents=True
Path.mkdir
安全地创建多级嵌套文件夹,核心在于两点:一是确保所有必要的父级目录都被创建,二是优雅地处理目标文件夹已经存在的情况。如果只是简单地调用
mkdir
FileNotFoundError
FileExistsError
确保创建所有父级目录:
无论是
os
pathlib
os.makedirs(path)
"data/raw/2023/q1"
data
data/raw
data/raw/2023
os.makedirs()
q1
os.mkdir()
Path(path).mkdir(parents=True)
pathlib
Path
mkdir
parents=True
mkdir
处理文件夹已存在的情况:
这是确保操作“安全”的关键一环。我们不希望脚本因为文件夹已经存在而崩溃。
os.makedirs(path, exist_ok=True)
os.makedirs()
exist_ok=True
Path(path).mkdir(parents=True, exist_ok=True)
pathlib
exist_ok=True
parents=True
示例代码(强调安全性和幂等性):
import os
from pathlib import Path
# 使用 os 模块
safe_folder_os = "project_data/logs/daily_report"
print(f"尝试使用 os.makedirs 安全创建 '{safe_folder_os}'...")
os.makedirs(safe_folder_os, exist_ok=True)
print(f"'{safe_folder_os}' 目录已确保存在。")
# 再次运行,验证幂等性
print(f"再次尝试使用 os.makedirs 安全创建 '{safe_folder_os}'...")
os.makedirs(safe_folder_os, exist_ok=True)
print(f"'{safe_folder_os}' 目录再次确保存在,没有错误。")
print("-" * 30)
# 使用 pathlib 库
safe_folder_pl = Path("user_profiles/admin/settings")
print(f"尝试使用 pathlib.mkdir 安全创建 '{safe_folder_pl}'...")
safe_folder_pl.mkdir(parents=True, exist_ok=True)
print(f"'{safe_folder_pl}' 目录已确保存在。")
# 再次运行,验证幂等性
print(f"再次尝试使用 pathlib.mkdir 安全创建 '{safe_folder_pl}'...")
safe_folder_pl.mkdir(parents=True, exist_ok=True)
print(f"'{safe_folder_pl}' 目录再次确保存在,没有错误。")通过以上方法,你的Python脚本在创建文件夹时将更加健壮和可靠,无论面对何种初始的文件系统状态,都能按预期执行。
在Python中创建文件夹,虽然代码本身通常是直观的,但实际运行中可能会遇到一些“坑”,其中最常见的就是权限问题,其次是隐晦的跨平台兼容性考量。
权限问题:
这几乎是所有文件系统操作的噩梦。当你尝试在一个没有写入权限的目录下创建文件夹时,Python会抛出
PermissionError
/
/usr
/bin
C:\Program Files
如何解决权限问题:
运行脚本时使用足够权限: 最直接的方法是确保运行Python脚本的用户拥有目标路径的写入权限。在Linux/macOS上,这意味着可能需要使用
sudo python your_script.py
选择合适的创建路径: 避免在系统关键目录或已知受保护的区域创建文件夹。通常,用户数据应该存放在用户的主目录(
~/
C:\Users\YourUser
tempfile.gettempdir()
Path.home()
os.path.expanduser('~')错误处理: 无论你多么小心,权限问题总有可能发生。因此,在创建文件夹的代码周围加上
try-except PermissionError
import os
from pathlib import Path
try_path = "/root/my_app_data" # 假设这是一个普通用户没有权限的路径
try:
Path(try_path).mkdir(parents=True, exist_ok=True)
print(f"文件夹 '{try_path}' 创建成功。")
except PermissionError:
print(f"错误:没有权限在 '{try_path}' 创建文件夹。请检查权限或尝试其他路径。")
except Exception as e: # 捕获其他可能的错误
print(f"创建文件夹时发生未知错误: {e}")跨平台兼容性:
Python在设计时就考虑到了跨平台兼容性,
os
pathlib
路径分隔符: 这是最常见的跨平台差异。Windows使用反斜杠
\
C:\Users\Admin\Documents
/
/home/user/documents
os
os.path.join()
pathlib
Path
pathlib
pathlib
import os
from pathlib import Path
# os 模块的跨平台路径拼接
folder_name = "reports"
sub_folder = "2023_q4"
file_name = "summary.txt"
full_path_os = os.path.join(folder_name, sub_folder, file_name)
print(f"os.path.join 拼接的路径: {full_path_os}") # 在Windows上会是'reports\2023_q4\summary.txt',在Linux上是'reports/2023_q4/summary.txt'
# pathlib 库的跨平台路径拼接
full_path_pl = Path("reports") / "2023_q4" / "summary.txt"
print(f"pathlib 拼接的路径: {full_path_pl}") # 同样会自动适应操作系统文件系统大小写敏感性: Unix/Linux文件系统通常是大小写敏感的(
File.txt
File.txt
总的来说,处理权限问题主要依靠良好的错误处理和选择合适的存储位置。而跨平台兼容性,Python的
os.path.join
pathlib
以上就是Python怎么创建文件夹_os模块与Pathlib库文件夹创建的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号