首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Python中使用os.makedirs创建dir时的权限问题

在Python中使用os.makedirs创建dir时的权限问题
EN

Stack Overflow用户
提问于 2011-03-08 11:35:16
回答 3查看 125.4K关注 0票数 63

我只是试图处理一个上传的文件,并将它写在一个工作的dir中,其中的名称是系统时间戳。问题是我想要创建具有完全权限的目录(777),但我做不到!使用以下代码创建具有755权限的目录。

代码语言:javascript
运行
复制
def handle_uploaded_file(upfile, cTimeStamp):
    target_dir = "path_to_my_working_dir/tmp_files/%s" % (cTimeStamp)
    os.makedirs(target_dir, mode=0777)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-08 11:44:08

根据官方的python 文档os.makedirs函数的模式参数在某些系统上可能被忽略,而在不忽略它的系统上,当前的umask值被屏蔽。

无论哪种方式,都可以使用os.chmod函数将模式强制为0o777 (0777抛出一个语法错误)。

票数 47
EN

Stack Overflow用户

发布于 2013-06-04 12:51:42

对于Unix系统(当模式未被忽略时),提供的模式首先被当前用户的umask屏蔽。您还可以修复运行此代码的用户的umask。这样就不必调用os.chmod()方法了。请注意,如果不修复umask并使用os.makedirs方法创建多个目录,则必须标识已创建的文件夹并在其上应用os.chmod

我为我创建了以下函数:

代码语言:javascript
运行
复制
def supermakedirs(path, mode):
    if not path or os.path.exists(path):
        return []
    (head, tail) = os.path.split(path)
    res = supermakedirs(head, mode)
    os.mkdir(path)
    os.chmod(path, mode)
    res += [path]
    return res
票数 14
EN

Stack Overflow用户

发布于 2021-05-27 13:58:04

其他的解析器没有为我工作(使用python 2.7)。

我之前必须添加os.umask(0),以删除当前用户的掩码。我不得不将模式从0777改为0o777

代码语言:javascript
运行
复制
def handle_uploaded_file(upfile, cTimeStamp):
    target_dir = "path_to_my_working_dir/tmp_files/%s" % (cTimeStamp)
    os.umask(0)
    os.makedirs(path, mode=0o777)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5231901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档