Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 24, 2012 13:59:21

Serbis
От:
Зарегистрирован: 2012-02-13
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Повторное открытие файла

Почему при такой конструкции файл открывается только один раз, а повторная попытка открыть его приводит к ошибке - файл не найден.

def getConf(self, opt):
    line = map(lambda s: s.replace('\n', ''), open('data/createa.conf', 'r').readlines())
    l = []
    for i in range(len(line)):
      l.append(line[i].split('='))
    return l[l[0].index(opt)][1]



Отредактировано Serbis (Июнь 24, 2012 14:03:54)

Офлайн

#2 Июнь 24, 2012 14:27:21

newca9h
Зарегистрирован: 2012-05-28
Сообщения: 46
Репутация: +  3  -
Профиль   Отправить e-mail  

Повторное открытие файла

Может его(файл) закрыть нужно по окончанию работы с ним?

Офлайн

#3 Июнь 24, 2012 14:37:46

Serbis
От:
Зарегистрирован: 2012-02-13
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Повторное открытие файла

newca9h
Может его(файл) закрыть нужно по окончанию работы с ним?
Да вот я тоже думаю проблема в этом, но как это сделать не имея его дескриптора?



Офлайн

#4 Июнь 24, 2012 14:57:24

Serbis
От:
Зарегистрирован: 2012-02-13
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Повторное открытие файла

Нет, проблема оказывается не в этом, так как создал дескриптор файла, закрыл его, а при повторном открытии вылезла та же ошибка.



Офлайн

#5 Июнь 24, 2012 14:57:24

Serbis
От:
Зарегистрирован: 2012-02-13
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Повторное открытие файла

Нет, проблема оказывается не в этом, так как создал дескриптор файла, закрыл его, а при повторном открытии вылезла та же ошибка.



Офлайн

#6 Июнь 24, 2012 15:03:54

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Повторное открытие файла

Знакомый код :) Не надо бездумно копировать то, что вам предложили, не зная о вашей конкретной задаче.

def getConf(filename):
    with open(filename, 'r') as conf:
        return dict(opt.split('=', 1) for opt in conf.read().splitlines())
 
config = getConf('config.conf')
# config[opt] = value

Кстати, для парсинга таких файлов есть специальные модули - configparser.



Отредактировано fata1ex (Июнь 24, 2012 17:17:29)

Офлайн

#7 Июнь 24, 2012 15:12:10

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Повторное открытие файла

Может вы дальше в коде меняете текущую директорию? (os.chdir)

upd:
Убрал код. У fata1ex оптимальный, только в split ограничение добавить.

Отредактировано reclosedev (Июнь 24, 2012 17:13:18)

Офлайн

#8 Июнь 24, 2012 15:39:21

Serbis
От:
Зарегистрирован: 2012-02-13
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Повторное открытие файла

Блиин, я ведь действительно делаю chdir, да еще в опциях вызываю свою же функцию… Похоже пора заканчивать бухать…



Офлайн

#9 Июнь 24, 2012 15:41:58

fata1ex
От:
Зарегистрирован: 2009-07-11
Сообщения: 732
Репутация: +  52  -
Профиль   Отправить e-mail  

Повторное открытие файла

Serbis
Похоже пора заканчивать бухать…
Python.su. Направляем на путь истинный.

reclosedev
Может вы дальше в коде меняете текущую директорию? (os.chdir)
КАК?!



Офлайн

#10 Июнь 24, 2012 17:04:42

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Повторное открытие файла

fata1ex
КАК?!
Только на ТНТ! “Экстрасенсы ведут расследование”

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version