在 /var/lib 中创建一个目录
Create a directory in /var/lib
我正在使用以下代码创建一个目录(如果它不存在)和该目录中的一个文件:
import os
mystr = 'hello world!'
mypath = '/salam/me/'
if not os.path.exists(mypath):
oldmask = os.umask(000)
os.makedirs(mypath, 0755)
os.umask(oldmask)
text_file = open(mypath + "myfile", "w")
text_file.write("%s" % mystr)
text_file.close()
但我从控制台得到 IOError: [Errno 13] Permission denied
。我遵循了其他类似问题的答案,他们建议揭露并使用 0755
/0o755
/0777
/0o777
但在这种情况下它们似乎不起作用。我做错了什么?
跟进问题:我想在/var/lib/
做这份工作。会有所不同吗? (在设置权限方面)
注意这是Python版本2.7
您需要 运行 以 root 身份运行脚本,因为父文件夹 /var/lib
归 root 所有。不需要 umask 命令。
除此之外,我会像这样重写代码以避免竞争条件:
#!/usr/bin/env python3
import os
mystr = 'hello world!'
mypath = '/salam/me/'
try:
os.makedirs(mypath, 0755)
except FileExistsError:
print('folder exists')
text_file = open(mypath + "myfile", "w")
text_file.write("%s" % mystr)
text_file.close()
然后 运行 脚本作为 root:
sudo python3 my_script.py
PS:如果绑定了Python2,需要将上述方案中的FileExistsError
替换为OSError
。但是你必须另外检查 errno
:
#!/usr/bin/env python2
import errno
import os
mystr = 'hello world!'
mypath = '/salam/me/'
try:
os.makedirs(mypath, 0755)
except OSError as e:
if e.errno == errno.EEXIST:
print('folder exists')
else:
raise
text_file = open(mypath + "myfile", "w")
text_file.write("%s" % mystr)
text_file.close()
我正在使用以下代码创建一个目录(如果它不存在)和该目录中的一个文件:
import os
mystr = 'hello world!'
mypath = '/salam/me/'
if not os.path.exists(mypath):
oldmask = os.umask(000)
os.makedirs(mypath, 0755)
os.umask(oldmask)
text_file = open(mypath + "myfile", "w")
text_file.write("%s" % mystr)
text_file.close()
但我从控制台得到 IOError: [Errno 13] Permission denied
。我遵循了其他类似问题的答案,他们建议揭露并使用 0755
/0o755
/0777
/0o777
但在这种情况下它们似乎不起作用。我做错了什么?
跟进问题:我想在/var/lib/
做这份工作。会有所不同吗? (在设置权限方面)
注意这是Python版本2.7
您需要 运行 以 root 身份运行脚本,因为父文件夹 /var/lib
归 root 所有。不需要 umask 命令。
除此之外,我会像这样重写代码以避免竞争条件:
#!/usr/bin/env python3
import os
mystr = 'hello world!'
mypath = '/salam/me/'
try:
os.makedirs(mypath, 0755)
except FileExistsError:
print('folder exists')
text_file = open(mypath + "myfile", "w")
text_file.write("%s" % mystr)
text_file.close()
然后 运行 脚本作为 root:
sudo python3 my_script.py
PS:如果绑定了Python2,需要将上述方案中的FileExistsError
替换为OSError
。但是你必须另外检查 errno
:
#!/usr/bin/env python2
import errno
import os
mystr = 'hello world!'
mypath = '/salam/me/'
try:
os.makedirs(mypath, 0755)
except OSError as e:
if e.errno == errno.EEXIST:
print('folder exists')
else:
raise
text_file = open(mypath + "myfile", "w")
text_file.write("%s" % mystr)
text_file.close()