Reputation: 2158
I'm using configparser in order to read and modify automatically a file conf named 'streamer.conf'. I'm doing this :
import configparser
config = configparser.ConfigParser()
config.read('C:/Users/../Desktop/streamer.conf')
And then it breaks apart with this Error message :
MissingSectionHeaderError: File contains no section headers.
file: 'C:/Users/../Desktop/streamer.conf', line: 1
u'input{\n'
What might be wrong? Any help appreciated.
Upvotes: 3
Views: 31151
Reputation: 8118
As mentioned in other answers the config file needs to be INI format, but the actual error you're seeing is due to the fact that the requested config file is missing any section headers (as mentioned in the error message) - these are names enclosed in square brackets which provide a header for a section of the INI file. The default header is [DEFAULT]
e.g.
[DEFAULT]
config_item1='something'
config_item2=2
Upvotes: 4
Reputation: 6726
just specify right encoding
config.read(config_file_path, encoding='utf-8-sig')
Upvotes: 6
Reputation: 1667
ConfigParser parse UTF-8 file with BOM(xef xbb xbf)
u = open("setting.ini").read().decode("utf-8-sig").encode("utf-8")
fp = tempfile.TemporaryFile()
fp.write(u)
fp.seek(0)
conf = ConfigParser.ConfigParser()
conf.readfp(fp)
Upvotes: 1
Reputation: 7844
I got the same error message when I created a pip.conf
file. In my case, I had inadvertently created a UTF-8 file with BOM (byte-order marker) instead of a plain UTF-8 file (with no BOM).
So, check to make sure you have a plain text file. If you're not sure, you can open the file in a hex editor and check the first byte(s).
Upvotes: 1
Reputation: 1812
You didn't include streamer.conf
, but from the error message, it's not in the right format. configparser
is used for parsing "INI" files:
[section1]
setting1 = value
setting2 = value
[section2]
setting3 = value
setting1 = value
etc.
Upvotes: 0