Запись в файл

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'

Я хочу, чтобы файл был создан.
Пробовал w, a, rw, w+, a+. Все выдают одну и ту же ошибку.

0
задан 1 July 2012 в 21:55

2 ответа

Убедитесь, что каталог /home/robin/.config/RedThat/ существует, прежде чем пытаться создать в нем файл.

0
ответ дан 1 July 2012 в 21:55

Необходимо убедиться, что все родительские каталоги существуют, по пути, по которому вы хотите создать файл. Вы можете использовать os.makedirs для достижения этой цели. Вам также, вероятно, следует избегать использования xdg.BaseDirectory, поскольку python-xdg на самом деле больше не поддерживается. Вместо этого вы можете использовать dirspec.basedir, который является пакетом python-dirspec в Ubuntu.

0
ответ дан 1 July 2012 в 21:55

Другие вопросы по тегам:

Похожие вопросы: