Escrevendo para um arquivo

0
def loadSubredditConfig (self):
    self.builder.get_object ('cbxR').remove_all ()
    path = os.path.join (xdg.BaseDirectory.xdg_config_home, 'RedThat', 'subreddits')

    if (os.path.exists (path)):
        file = open (path, 'r+')
        for line in file.readLines ():
            self.builder.get_object ('cbxR').append_text (line.strip ().replace (' ', ''))
    else:
        file = open (path, 'w') # Problem here
        file.write ('')
        self.builder.get_object ('cbxR').append_text ('')

Traceback (most recent call last):
  File "bin/gtkreddit", line 33, in <module>
    gtkreddit.main()
  File "/home/robin/Ubuntu One/Python/gtkreddit/gtkreddit/__init__.py", line 33, in main
    window = GtkredditWindow.GtkredditWindow()
  File "/home/robin/Ubuntu One/Python/gtkreddit/gtkreddit_lib/Window.py", line 35, in __new__
    new_object.finish_initializing(builder)
  File "/home/robin/Ubuntu One/Python/gtkreddit/gtkreddit/GtkredditWindow.py", line 63, in finish_initializing
    self.loadSubredditConfig ()
  File "/home/robin/Ubuntu One/Python/gtkreddit/gtkreddit/GtkredditWindow.py", line 236, in loadSubredditConfig
    file = open (path, 'w')
IOError: [Errno 2] No such file or directory: '/home/robin/.config/RedThat/subreddits'

Eu quero que o arquivo seja criado.
Tentei w , a , rw , w+ , a+ . Todos lançam o mesmo erro.

    
por RobinJ 01.07.2012 / 19:55

2 respostas

2

Certifique-se de que o diretório /home/robin/.config/RedThat/ exista antes de tentar criar um arquivo nele.

    
por Timo 01.07.2012 / 20:00
1

Você precisa garantir que todos os diretórios pai existam, no caminho de onde você deseja criar um arquivo. Você pode usar os.makedirs para realizar isso. Você provavelmente também deve evitar usar xdg.BaseDirectory , já que python-xdg não é mais mantido upstream. Você pode usar dirspec.basedir , que é o pacote python-dirspec no Ubuntu.

    
por dobey 01.07.2012 / 20:08