Python创建多级目录后如何为后3个子目录设置权限
解决Python多级目录创建并批量设置权限的问题
你需要创建C://user//Folder1//Folder2//Folder3//Folder4//Folder5//,其中C://user//Folder1//Folder2已存在,要求给新创建的Folder3、Folder4、Folder5都设置权限,且不改变当前位于C://user1//python_script的工作目录。原脚本仅能给最末级的Folder5设置权限,因为os.makedirs一次性创建所有缺失目录后,只对最终目录执行了权限修改操作。
以下是两种可行的解决方案:
方法一:使用os模块逐个创建并设置权限
通过遍历需要创建的子目录层级,逐个创建目录并立即设置权限,全程使用绝对路径操作,不会改动工作目录。
import os # 已存在的基础目录路径 base_dir = "C://user//Folder1//Folder2//" # 需要创建的子目录层级 new_subdirs = ["Folder3", "Folder4", "Folder5"] current_path = base_dir for subdir in new_subdirs: current_path = os.path.join(current_path, subdir) if not os.path.exists(current_path): os.mkdir(current_path) # 创建后直接设置全权限 os.chmod(current_path, 0o777)
方法二:使用pathlib模块(Python 3.4+)实现更直观的路径操作
pathlib提供了面向对象的路径处理方式,代码更简洁易读,同样能逐个创建目录并设置权限:
from pathlib import Path base_dir = Path("C://user//Folder1//Folder2//") new_subdirs = ["Folder3", "Folder4", "Folder5"] current_path = base_dir for subdir in new_subdirs: current_path /= subdir if not current_path.exists(): current_path.mkdir() current_path.chmod(0o777)
补充说明
- 0o777权限在Windows系统中作用有限,Windows采用ACL权限模型,若需要更精细的权限控制,需借助
win32api等库处理;基础场景下0o777可满足读写执行的权限需求。 - 确保脚本运行时拥有足够的系统权限,否则可能出现创建目录或修改权限失败的情况。
内容的提问来源于stack exchange,提问作者Susan
相关产品推荐
相关产品推荐

