我只是试图处理一个上传的文件,并将它写在一个工作的dir中,其中的名称是系统时间戳。问题是我想要创建具有完全权限的目录(777),但我做不到!使用以下代码创建具有755权限的目录。
def handle_uploaded_file(upfile, cTimeStamp):
target_dir = "path_to_my_working_dir/tmp_files/%s" % (cTimeStamp)
os.makedirs(target_dir, mode=0777)
发布于 2011-03-08 11:44:08
根据官方的python 文档,os.makedirs
函数的模式参数在某些系统上可能被忽略,而在不忽略它的系统上,当前的umask值被屏蔽。
无论哪种方式,都可以使用os.chmod
函数将模式强制为0o777 (0777抛出一个语法错误)。
发布于 2013-06-04 12:51:42
对于Unix系统(当模式未被忽略时),提供的模式首先被当前用户的umask屏蔽。您还可以修复运行此代码的用户的umask。这样就不必调用os.chmod()
方法了。请注意,如果不修复umask并使用os.makedirs
方法创建多个目录,则必须标识已创建的文件夹并在其上应用os.chmod
。
我为我创建了以下函数:
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
发布于 2021-05-27 13:58:04
其他的解析器没有为我工作(使用python 2.7)。
我之前必须添加os.umask(0)
,以删除当前用户的掩码。我不得不将模式从0777
改为0o777
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)
https://stackoverflow.com/questions/5231901
复制相似问题