Python不会写入文件,除非它已经存在:权限相关的问题

时间:2014-09-09 12:49:49

标签: 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运行我的应用程序,并且我已将我的用户(流浪者)添加到/etc/sudoers

所以python如果不存在就不会创建该文件,理由是它没有写入/ etc的权限,但如果它没有写入文件,它会愉快地写入文件确实存在。这是为什么?

2 个答案:

答案 0 :(得分:3)

更改

f = open(self.data_file, 'w')

f = open(self.data_file, 'w+')

答案 1 :(得分:1)

创建新文件涉及将新文件条目写入目录,该目录需要对目录具有写权限。修改现有文件会绕过此。