Re: Using 'with open(...) as ...' together with configparser.ConfigParser.read
On 2024-10-30, Loris Bennett wrote: > Jon Ribbens writes: >> As per the docs you link to, the read() method only takes filename(s) >> as arguments, if you have an already-open file you want to read then >> you should use the read_file() method instead. > > As you and others have pointed out, this is indeed covered in the docs, > so mea culpa. > > However, whereas I can see why you might want to read the config from a > dict or a string, what would be a use case in which I would want to > read from an open file rather than just reading from a file(name)? The ConfigParser module provides read(), read_file(), read_string(), and read_dict() methods. I think they were just trying to be comprehensive. It's a bit non-Pythonic really. -- https://mail.python.org/mailman/listinfo/python-list
Re: Using 'with open(...) as ...' together with configparser.ConfigParser.read
Jon Ribbens writes: > On 2024-10-29, Loris Bennett 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 >> >> >> >> whereas 'args.config_file' is just >> >> >> >> 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. > > As per the docs you link to, the read() method only takes filename(s) > as arguments, if you have an already-open file you want to read then > you should use the read_file() method instead. As you and others have pointed out, this is indeed covered in the docs, so mea culpa. However, whereas I can see why you might want to read the config from a dict or a string, what would be a use case in which I would want to read from an open file rather than just reading from a file(name)? Cheers, Loris -- This signature is currently under constuction. -- https://mail.python.org/mailman/listinfo/python-list
Re: Using 'with open(...) as ...' together with configparser.ConfigParser.read
On 2024-10-30, Loris Bennett wrote: > Jon Ribbens writes: >> On 2024-10-30, Loris Bennett wrote: >>> Jon Ribbens writes: As per the docs you link to, the read() method only takes filename(s) as arguments, if you have an already-open file you want to read then you should use the read_file() method instead. >>> >>> As you and others have pointed out, this is indeed covered in the docs, >>> so mea culpa. >>> >>> However, whereas I can see why you might want to read the config from a >>> dict or a string, what would be a use case in which I would want to >>> read from an open file rather than just reading from a file(name)? >> >> The ConfigParser module provides read(), read_file(), read_string(), >> and read_dict() methods. I think they were just trying to be >> comprehensive. It's a bit non-Pythonic really. > > OK, but is there a common situation might I be obliged to use > 'read_file'? I.e. is there some common case where the file name is not > available, only a corresponding file-like object or stream? Well, sure - any time it's not being read from a file. A bit ironic that the method to use in that situation is "read_file", of course. In my view the read() and read_file() methods have their names the wrong way round. But bear in mind this code is 27 years old, and the read() function came first. -- https://mail.python.org/mailman/listinfo/python-list
Re: Using 'with open(...) as ...' together with configparser.ConfigParser.read
Jon Ribbens writes: > On 2024-10-30, Loris Bennett wrote: >> Jon Ribbens writes: >>> As per the docs you link to, the read() method only takes filename(s) >>> as arguments, if you have an already-open file you want to read then >>> you should use the read_file() method instead. >> >> As you and others have pointed out, this is indeed covered in the docs, >> so mea culpa. >> >> However, whereas I can see why you might want to read the config from a >> dict or a string, what would be a use case in which I would want to >> read from an open file rather than just reading from a file(name)? > > The ConfigParser module provides read(), read_file(), read_string(), > and read_dict() methods. I think they were just trying to be > comprehensive. It's a bit non-Pythonic really. OK, but is there a common situation might I be obliged to use 'read_file'? I.e. is there some common case where the file name is not available, only a corresponding file-like object or stream? -- This signature is currently under constuction. -- https://mail.python.org/mailman/listinfo/python-list