Вам необходимо запустить скрипт от имени пользователя 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: Если вы связаны с Python 2, вам нужно заменить 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()