Retrieves a data file from the standard locations for the package and
provides the file as a file-like object that reads bytes.

Parameters:

data_name : str

Name/location of the desired data file. One of the following:

The name of a data file included in the source
distribution. The path is relative to the module
calling this function. For example, if calling from
astropy.pkname, use 'data/file.dat' to get the
file in astropy/pkgname/data/file.dat. Double-dots
can be used to go up a level. In the same example, use
'../data/file.dat' to get astropy/data/file.dat.

If a matching local file does not exist, the Astropy
data server will be queried for the file.

A hash like that produced by compute_hash can be
requested, prefixed by ‘hash/’
e.g. ‘hash/34c33b3eb0d56eb9462003af249eff28’. The hash
will first be searched for locally, and if not found,
the Astropy data server will be queried.

package : str, optional

If specified, look for a file relative to the given package, rather
than the default of looking relative to the calling module’s package.

encoding : str, optional

When None (default), returns a file-like object with a
read method returns str (unicode) objects, using
locale.getpreferredencoding as an encoding. This matches
the default behavior of the built-in open when no mode
argument is provided.

When 'binary', returns a file-like object where its read
method returns bytes objects.

When another string, it is the name of an encoding, and the
file-like object’s read method will return str (unicode)
objects, decoded from binary using the given encoding.

cache : bool

If True, the file will be downloaded and saved locally or the
already-cached local copy will be accessed. If False, the
file-like object will directly access the resource (e.g. if a
remote URL is accessed, an object like that from
urllib.request.urlopen is returned).

Returns:

fileobj : file-like

An object with the contents of the data file available via
read function. Can be used as part of a with statement,
automatically closing itself after the with block.

This next example would download a data file from the astropy data server
because the allsky/allsky_rosat.fits file is not present in the
source distribution. It will also save the file locally so the
next time it is accessed it won’t need to be downloaded.: