2016-01-02 2 views
2

У меня есть конфигурационный файл /tools/inputs/masterinputs.txt с этим содержимым:configparser.NoSectionError: Нет раздела: '' myvars

[myvars] 
maplat: 32.636004 
maplon: -115.437702 

Я использую configparser прочитать его:

import configparser 

config = configparser.ConfigParser()    
config.read("/tools/inputs/masterinputs.txt") 
maplat = float(config.get("myvars", "maplat")) 

Но я получаю сообщение об ошибке :

[email protected]:/tools# python3 solarrobot7-core.py 

Traceback (most recent call last): 
    File "/usr/lib/python3.2/configparser.py", line 1109, in _unify_values 
    sectiondict = self._sections[section] 
KeyError: 'myvars' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "solarrobot7-core.py", line 33, in <module> 
    maplat = float(config.get("myvars", "maplat")) 
    File "/usr/lib/python3.2/configparser.py", line 771, in get 
    d = self._unify_values(section, vars) 
    File "/usr/lib/python3.2/configparser.py", line 1112, in _unify_values 
    raise NoSectionError(section) 
configparser.NoSectionError: No section: 'myvars' 

Файл содержит раздел [myvars], и это очевидно читает файл конфигурации. Поэтому я не понимаю, что вызывает эту ошибку.

+1

"* Как вы можете видеть файл *" - нет, я не могу, потому что вы не включили файл в свой пост. BTW, строка '#! 'Не имеет никакого эффекта, она ** должна ** быть самой первой строкой в ​​файле, без комментариев, пробелов, ничего, перед ней. – cdarke

+0

спасибо. Я думал, что включил его. я удалил первую строку, которая начинается с #, и снова запустит ее и посмотрит, что произойдет. Еще раз спасибо за ответ! – frazelle09

+0

Я удалил эту строку # masterinputs.txt, которая будет помещена в/tools/input /, но выход ошибки остается неизменным. – frazelle09

ответ

1

Документы дают понять (курсив мой):

Signature: config.read(filenames, encoding=None) 

Docstring: Read and parse a filename or a list of filenames.

Files that cannot be opened are silently ignored; this is designed so that you can specify a list of potential configuration file locations (e.g. current directory, user's home directory, systemwide directory), and all existing configuration files in the list will be read. A single filename may also be given.

Python не может найти файл.

Добавьте это в начале файла:

import os 

assert os.path.exists('/tools/inputs/masterinputs.txt') 

Если пройти эти строки, вы должны увидеть, если файл содержит содержимое, отображаемое.

Кстати, вы можете использовать:

maplat = config.getfloat('myvars', "maplat") 

получить поплавок.

+0

Попробуй свои предложения, Майк. Мне нравится ваше предложение «maplat =». Это заставляет меня хотеть вернуться и работать над этим уже! - лол. – frazelle09

+0

Сделано! файл blinkin 'был действительно masterinputs..txt, и мои глаза просто не видели дополнительных ".". Спасибо всем, кто помог! – frazelle09

+0

Отлично, что это помогло. Кстати, вы можете [принять] (http://stackoverflow.com/help/accepted-answer) ответ, если он решает вашу проблему. –

Смежные вопросы