我有以下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
运行我的应用程序,并且我已将我的用户(流浪者)添加到/etc/sudoers
。
所以python如果不存在就不会创建该文件,理由是它没有写入/ etc的权限,但如果它没有写入文件,它会愉快地写入文件确实存在。这是为什么?
答案 0 :(得分:3)
更改
f = open(self.data_file, 'w')
要
f = open(self.data_file, 'w+')
答案 1 :(得分:1)
创建新文件涉及将新文件条目写入目录,该目录需要对目录具有写权限。修改现有文件会绕过此。