Re: FileNotFoundError thrown due to file name in file, rather than file itself

Liste des GroupesRevenir à cl python 
Sujet : Re: FileNotFoundError thrown due to file name in file, rather than file itself
De : loris.bennett (at) *nospam* fu-berlin.de (Loris Bennett)
Groupes : comp.lang.python
Date : 12. Nov 2024, 09:52:31
Autres entêtes
Organisation : FUB-IT, Freie Universität Berlin
Message-ID : <87o72kygts.fsf@zedat.fu-berlin.de>
References : 1 2 3
User-Agent : Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
Cameron Simpson <cs@cskk.id.au> writes:

On 11Nov2024 18:24, dieter.maurer@online.de <dieter.maurer@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.

I appreciate the point you make about the smallest possible piece of
code, although I can imagine that this could potentially create a lot of
try/except clutter and I might just want a single block and then try to
catch various exceptions.

Regarding your example above, if 'missingfile.py' contains the following

  import configparser

  config = configparser.ConfigParser()

  try:
      config.read('/foo/bar')
  except FileNotFoundError as e:
      print(f"Error: configuration file {config_file} not found: {e}")

them

  python3 missingfile.py

does not produce an any output for me and so does not seem to be a
reliable way of handling the case where the config file does not exist.

Cheers,

Loris

--
This signature is currently under constuction.

Date Sujet#  Auteur
11 Nov 24 * Re: FileNotFoundError thrown due to file name in file, rather than file itself4Cameron Simpson
12 Nov 24 `* Re: FileNotFoundError thrown due to file name in file, rather than file itself3Loris Bennett
12 Nov 24  +- Re: FileNotFoundError thrown due to file name in file, rather than file itself1Karsten Hilbert
12 Nov 24  `- Re: FileNotFoundError thrown due to file name in file, rather than file itself1Rob Cliffe

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal