On 2024-10-29 13:56, Loris Bennett via Python-list wrote:
Hi,

With Python 3.9.18, if I do

     try:
         with open(args.config_file, 'r') as config_file:
             config = configparser.ConfigParser()
             config.read(config_file)
             print(config.sections())

i.e try to read the configuration with the variable defined via 'with
... as', I get

    []

whereas if I use the file name directly

     try:
         with open(args.config_file, 'r') as config_file:
             config = configparser.ConfigParser()
             config.read(args.config_file)
             print(config.sections())
I get

   ['loggers', 'handlers', 'formatters', 'logger_root', 'handler_fileHandler', 
'handler_consoleHandler', 'formatter_defaultFormatter']

which is what I expect.

If I print type of 'config_file' I get

   <class '_io.TextIOWrapper'>

whereas 'args.config_file' is just

   <class 'str'>

Should I be able to use the '_io.TextIOWrapper' object variable here?  If so 
how?

Here

   https://docs.python.org/3.9/library/configparser.html

there are examples which use the 'with open ... as' variable for writing
a configuration file, but not for reading one.

Cheers,

Loris

'config.read' expects a path or paths. If you give it a file handle, it treats it as an iterable. (It might be reading the line as paths of files, but I haven't tested it).

If you want to read from an open file, use 'config.read_file' instead.

--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to