Python不会在文件不存在时写入:权限相关问题
我有以下的Python代码:
class Server(object):
def __init__(self, options):
self.data_file = '/etc/my_module/resources.json'
# Triggered when new data is received
def write(self, data):
try:
f = open(self.data_file, 'w')
json.dump(data, f)
except Exception, e:
print e
finally:
f.close()
如果文件 /etc/my_module/resources.json
不存在,当我调用 write
方法时,就会出现错误信息:
[Errno 2] No such file or directory: '/etc/my_module/resources.json'
如果我手动创建这个文件,然后再调用 write
方法,所有的操作就都正常了,json数据也能写入文件。
我用sudo来运行我的应用程序: sudo python my_module.py
,而且我已经把我的用户(vagrant)添加到了 /etc/sudoers
文件里。
所以,Python在文件不存在的时候不会创建这个文件,因为它认为没有权限去写入 /etc 这个目录,但如果文件已经存在,它就可以顺利写入。为什么会这样呢?
2 个回答
2
创建一个新文件的过程其实就是在文件夹里添加一个新的文件记录,这需要你对这个文件夹有写入权限。而如果你只是修改一个已经存在的文件,就不需要这个权限了。
4
更改
f = open(self.data_file, 'w')
为
f = open(self.data_file, 'w+')