File: C:/Users/fred/anaconda3/Lib/site-packages/astropy/table/scripts/showtable.py
# Licensed under a 3-clause BSD style license - see LICENSE.rst
"""
``showtable`` is a command-line script based on ``astropy.io`` and
``astropy.table`` for printing ASCII, FITS, HDF5 or VOTable files(s) to the
standard output.
Example usage of ``showtable``:
1. FITS::
$ showtable astropy/io/fits/tests/data/table.fits
target V_mag
------- -----
NGC1001 11.1
NGC1002 12.3
NGC1003 15.2
2. ASCII::
$ showtable astropy/io/ascii/tests/t/simple_csv.csv
a b c
--- --- ---
1 2 3
4 5 6
3. XML::
$ showtable astropy/io/votable/tests/data/names.xml --max-width 70
col1 col2 col3 ... col15 col16 col17
--- deg deg ... mag mag ---
------------------------- -------- ------- ... ----- ----- -----
SSTGLMC G000.0000+00.1611 0.0000 0.1611 ... -- -- AA
4. Print all the FITS tables in the current directory::
$ showtable *.fits
"""
import argparse
import textwrap
import warnings
from astropy import log
from astropy.table import Table
from astropy.utils.exceptions import AstropyUserWarning
def showtable(filename, args):
"""
Read a table and print to the standard output.
Parameters
----------
filename : str
The path to a FITS file.
"""
if args.info and args.stats:
warnings.warn("--info and --stats cannot be used together", AstropyUserWarning)
if any((args.max_lines, args.max_width, args.hide_unit, args.show_dtype)) and (
args.info or args.stats
):
warnings.warn(
"print parameters are ignored if --info or --stats is used",
AstropyUserWarning,
)
# these parameters are passed to Table.read if they are specified in the
# command-line
read_kwargs = ("hdu", "format", "table_id", "delimiter")
kwargs = {k: v for k, v in vars(args).items() if k in read_kwargs and v is not None}
try:
table = Table.read(filename, **kwargs)
if args.info:
table.info("attributes")
elif args.stats:
table.info("stats")
else:
formatter = table.more if args.more else table.pprint
formatter(
max_lines=args.max_lines,
max_width=args.max_width,
show_unit=(False if args.hide_unit else None),
show_dtype=(True if args.show_dtype else None),
)
except OSError as e:
log.error(str(e))
def main(args=None):
"""The main function called by the `showtable` script."""
parser = argparse.ArgumentParser(
description=textwrap.dedent(
"""
Print tables from ASCII, FITS, HDF5, VOTable file(s). The tables
are read with 'astropy.table.Table.read' and are printed with
'astropy.table.Table.pprint'. The default behavior is to make the
table output fit onto a single screen page. For a long and wide
table this will mean cutting out inner rows and columns. To print
**all** the rows or columns use ``--max-lines=-1`` or
``max-width=-1``, respectively. The complete list of supported
formats can be found at
http://astropy.readthedocs.io/en/latest/io/unified.html#built-in-table-readers-writers
"""
)
)
addarg = parser.add_argument
addarg("filename", nargs="+", help="path to one or more files")
addarg(
"--format",
help=(
"input table format, should be specified if it "
"cannot be automatically detected"
),
)
addarg("--more", action="store_true", help="use the pager mode from Table.more")
addarg(
"--info", action="store_true", help="show information about the table columns"
)
addarg(
"--stats", action="store_true", help="show statistics about the table columns"
)
# pprint arguments
pprint_args = parser.add_argument_group("pprint arguments")
addarg = pprint_args.add_argument
addarg(
"--max-lines",
type=int,
help=(
"maximum number of lines in table output (default=screen "
"length, -1 for no limit)"
),
)
addarg(
"--max-width",
type=int,
help="maximum width in table output (default=screen width, -1 for no limit)",
)
addarg(
"--hide-unit",
action="store_true",
help=(
"hide the header row for unit (which is shown "
"only if one or more columns has a unit)"
),
)
addarg(
"--show-dtype",
action="store_true",
help=(
"always include a header row for column dtypes "
"(otherwise shown only if any column is multidimensional)"
),
)
# ASCII-specific arguments
ascii_args = parser.add_argument_group("ASCII arguments")
addarg = ascii_args.add_argument
addarg("--delimiter", help="column delimiter string")
# FITS-specific arguments
fits_args = parser.add_argument_group("FITS arguments")
addarg = fits_args.add_argument
addarg("--hdu", help="name of the HDU to show")
# HDF5-specific arguments
hdf5_args = parser.add_argument_group("HDF5 arguments")
addarg = hdf5_args.add_argument
addarg("--path", help="the path from which to read the table")
# VOTable-specific arguments
votable_args = parser.add_argument_group("VOTable arguments")
addarg = votable_args.add_argument
addarg("--table-id", help="the table to read in")
args = parser.parse_args(args)
for idx, filename in enumerate(args.filename):
if idx > 0:
print()
showtable(filename, args)