FileNotFoundError thrown due to file name in file, rather than file itself
Cameron Simpson
cs at cskk.id.au
Mon Nov 11 16:17:46 EST 2024
On 11Nov2024 18:24, dieter.maurer at online.de <dieter.maurer at online.de> wrote:
>Loris Bennett wrote at 2024-11-11 15:05 +0100:
>>I have the following in my program:
>> try:
>> logging.config.fileConfig(args.config_file)
>> config = configparser.ConfigParser()
>> config.read(args.config_file)
>> if args.verbose:
>> print(f"Configuration file: {args.config_file}")
>> except FileNotFoundError:
>> print(f"Error: configuration file {args.config_file} not found. Exiting.")
>
>Do not replace full error information (including a traceback)
>with your own reduced error message.
>If you omit your "try ... except FileNotFoundError`
>(or start the `except` clause with a `raise`), you
>will learn where in the code the exception has been raised
>and likely as well what was not found (Python is quite good
>with such error details).
Actually, file-not-found is pretty well defined - the except action
itself is fine in that regard.
[...]
>>2. In terms of generating a helpful error message, how should one
>> distinguish between the config file not existing and the log file not
>> existing?
Generally you should put a try/except around the smallest possible piece
of code. So:
config = configparser.ConfigParser()
try:
config.read(args.config_file)
except FileNotFoundError as e:
print(f"Error: configuration file {args.config_file} not found: {e}")
This way you know that the config file was missing.
Cheers,
Cameron Simpson <cs at cskk.id.au>
More information about the Python-list
mailing list