<?xml version="1.0" encoding="ascii"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>pygrib.open</title> <link rel="stylesheet" href="epydoc.css" type="text/css" /> <script type="text/javascript" src="epydoc.js"></script> </head> <body bgcolor="white" text="black" link="blue" vlink="#204080" alink="#204080"> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Home link --> <th> <a href="pygrib-module.html">Home</a> </th> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table width="100%" cellpadding="0" cellspacing="0"> <tr valign="top"> <td width="100%"> <span class="breadcrumbs"> <a href="pygrib-module.html">Module pygrib</a> :: Class open </span> </td> <td> <table cellpadding="0" cellspacing="0"> <!-- hide/show private --> </table> </td> </tr> </table> <!-- ==================== TYPE DESCRIPTION ==================== --> <h1 class="epydoc">type open</h1><p class="nomargin-top"></p> <pre class="base-tree"> object --+ | <strong class="uidshort">open</strong> </pre> <hr /> <p>open(filename)</p> <p>returns GRIB file iterator object given GRIB filename. When iterated, returns instances of the <a href="pygrib.gribmessage-class.html" class="link">gribmessage</a> class. Behaves much like a python file object, with <a href="pygrib.open-class.html#seek" class="link">seek</a>, <a href="pygrib.open-class.html#tell" class="link">tell</a>, <a href="pygrib.open-class.html#read" class="link">read</a> and <a href="pygrib.open-class.html#close" class="link">close</a> methods, except that offsets are measured in grib messages instead of bytes. Additional methods include <a href="pygrib.open-class.html#rewind" class="link">rewind</a> (like <code>seek(0)</code>), <a href="pygrib.open-class.html#message" class="link">message</a> (like <code>seek(N-1)</code>; followed by <code>readline()</code>), and <a href="pygrib.open-class.html#select" class="link">select</a> (filters messages based on specified conditions). The <code>__call__</code> method forwards to <a href="pygrib.open-class.html#select" class="link">select</a>, and instances can be sliced with <code>__getitem__</code> (returning lists of <a href="pygrib.gribmessage-class.html" class="link">gribmessage</a> instances). The position of the iterator is not altered by slicing with <code>__getitem__</code>.</p> <!-- ==================== INSTANCE METHODS ==================== --> <a name="section-InstanceMethods"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Instance Methods</span></td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="__call__"></a><span class="summary-sig-name">__call__</span>(<span class="summary-sig-arg">...</span>)</span><br /> same as <a href="pygrib.open-class.html#select" class="link">select</a></td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="__enter__"></a><span class="summary-sig-name">__enter__</span>(<span class="summary-sig-arg">...</span>)</span></td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="__exit__"></a><span class="summary-sig-name">__exit__</span>(<span class="summary-sig-arg">...</span>)</span></td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="__getitem__"></a><span class="summary-sig-name">__getitem__</span>(<span class="summary-sig-arg">x</span>, <span class="summary-sig-arg">y</span>)</span><br /> x[y]</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pygrib.open-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">filename</span>)</span><br /> x.__init__(...) initializes x; see help(type(x)) for signature</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="__iter__"></a><span class="summary-sig-name">__iter__</span>(<span class="summary-sig-arg">x</span>)</span><br /> iter(x)</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">a new object with type S, a subtype of T</span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pygrib.open-class.html#__new__" class="summary-sig-name">__new__</a>(<span class="summary-sig-arg">T</span>, <span class="summary-sig-arg">S</span>, <span class="summary-sig-arg">...</span>)</span></td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="__next__"></a><span class="summary-sig-name">__next__</span>(<span class="summary-sig-arg">...</span>)</span></td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="close"></a><span class="summary-sig-name">close</span>()</span><br /> close GRIB file, deallocate C structures associated with class instance</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pygrib.open-class.html#message" class="summary-sig-name">message</a>(<span class="summary-sig-arg">N</span>)</span><br /> retrieve N'th message in iterator.</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type">the next value, or raise StopIteration</span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="next"></a><span class="summary-sig-name">next</span>(<span class="summary-sig-arg">x</span>)</span></td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pygrib.open-class.html#read" class="summary-sig-name">read</a>(<span class="summary-sig-arg">N</span>=<span class="summary-sig-default">None</span>)</span><br /> read N messages from current position, returning grib messages instances in a list.</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pygrib.open-class.html#readline" class="summary-sig-name">readline</a>()</span><br /> read one entire grib message from the file.</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="rewind"></a><span class="summary-sig-name">rewind</span>(<span class="summary-sig-arg">...</span>)</span><br /> rewind iterator (same as seek(0))</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="seek"></a><span class="summary-sig-name">seek</span>(<span class="summary-sig-arg">N</span>, <span class="summary-sig-arg">from_what</span>=<span class="summary-sig-default">0</span>)</span><br /> advance iterator N grib messages from beginning of file (if <code>from_what=0</code>), from current position (if <code>from_what=1</code>) or from the end of file (if <code>from_what=2</code>).</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a href="pygrib.open-class.html#select" class="summary-sig-name">select</a>(<span class="summary-sig-arg">**kwargs</span>)</span><br /> return a list of <a href="pygrib.gribmessage-class.html" class="link">gribmessage</a> instances from iterator filtered by kwargs.</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td><span class="summary-sig"><a name="tell"></a><span class="summary-sig-name">tell</span>(<span class="summary-sig-arg">...</span>)</span><br /> returns position of iterator (grib message number, 0 means iterator is positioned at beginning of file).</td> <td align="right" valign="top"> </td> </tr> </table> </td> </tr> </table> <!-- ==================== INSTANCE VARIABLES ==================== --> <a name="section-InstanceVariables"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Instance Variables</span></td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="messagenumber"></a><span class="summary-name">messagenumber</span><br /> The grib message number that the iterator currently points to (the value returned by <a href="pygrib.open-class.html#tell" class="link">tell</a>). </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="messages"></a><span class="summary-name">messages</span><br /> The total number of grib messages in the file. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="name"></a><span class="summary-name">name</span><br /> The GRIB file which the instance represents. </td> </tr> </table> <!-- ==================== PROPERTIES ==================== --> <a name="section-Properties"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Properties</span></td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="closed"></a><span class="summary-name">closed</span> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="has_multi_field_msgs"></a><span class="summary-name">has_multi_field_msgs</span> </td> </tr> </table> <!-- ==================== METHOD DETAILS ==================== --> <a name="section-MethodDetails"></a> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Method Details</span></td> </tr> </table> <a name="__init__"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">filename</span>)</span> <br /><em class="fname">(Constructor)</em> </h3> </td><td align="right" valign="top" > </td> </tr></table> <p>x.__init__(...) initializes x; see help(type(x)) for signature</p> <dl class="fields"> <dt>Overrides: object.__init__ </dt> </dl> </td></tr></table> </div> <a name="__new__"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">__new__</span>(<span class="sig-arg">T</span>, <span class="sig-arg">S</span>, <span class="sig-arg">...</span>)</span> </h3> </td><td align="right" valign="top" > </td> </tr></table> <dl class="fields"> <dt>Returns: a new object with type S, a subtype of T</dt> <dt>Overrides: object.__new__ </dt> </dl> </td></tr></table> </div> <a name="message"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">message</span>(<span class="sig-arg">N</span>)</span> </h3> </td><td align="right" valign="top" > </td> </tr></table> <p>retrieve N'th message in iterator. same as seek(N-1) followed by readline().</p> <dl class="fields"> </dl> </td></tr></table> </div> <a name="read"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">read</span>(<span class="sig-arg">N</span>=<span class="sig-default">None</span>)</span> </h3> </td><td align="right" valign="top" > </td> </tr></table> <p>read N messages from current position, returning grib messages instances in a list. If N=None, all the messages to the end of the file are read. <code>pygrib.open(f).read()</code> is equivalent to <code>list(pygrib.open(f))</code>, both return a list containing <a href="pygrib.gribmessage-class.html" class="link">gribmessage</a> instances for all the grib messages in the file <code>f</code>.</p> <dl class="fields"> </dl> </td></tr></table> </div> <a name="readline"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">readline</span>()</span> </h3> </td><td align="right" valign="top" > </td> </tr></table> <p>read one entire grib message from the file. Returns a <a href="pygrib.gribmessage-class.html" class="link">gribmessage</a> instance, or None if an EOF is encountered.</p> <dl class="fields"> </dl> </td></tr></table> </div> <a name="select"></a> <div> <table class="details" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr><td> <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr valign="top"><td> <h3 class="epydoc"><span class="sig"><span class="sig-name">select</span>(<span class="sig-arg">**kwargs</span>)</span> </h3> </td><td align="right" valign="top" > </td> </tr></table> <p>return a list of <a href="pygrib.gribmessage-class.html" class="link">gribmessage</a> instances from iterator filtered by kwargs. If keyword is a container object, each grib message in the iterator is searched for membership in the container. If keyword is a callable (has a _call__ method), each grib message in the iterator is tested using the callable (which should return a boolean). If keyword is not a container object or a callable, each grib message in the iterator is tested for equality.</p> <p>Example usage:</p> <pre class="py-doctest"> <span class="py-prompt">>>> </span><span class="py-keyword">import</span> pygrib <span class="py-prompt">>>> </span>grbs = pygrib.open(<span class="py-string">'sampledata/gfs.grb'</span>) <span class="py-prompt">>>> </span>selected_grbs=grbs.select(shortName=<span class="py-string">'gh'</span>,typeOfLevel=<span class="py-string">'isobaricInhPa'</span>,level=10) <span class="py-prompt">>>> </span><span class="py-keyword">for</span> grb <span class="py-keyword">in</span> selected_grbs: grb <span class="py-output">26:Geopotential height:gpm (instant):regular_ll:isobaricInhPa:level 10 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span> <span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-comment"># the __call__ method does the same thing</span> <span class="py-prompt">>>> </span>selected_grbs=grbs(shortName=<span class="py-string">'gh'</span>,typeOfLevel=<span class="py-string">'isobaricInhPa'</span>,level=10) <span class="py-prompt">>>> </span><span class="py-keyword">for</span> grb <span class="py-keyword">in</span> selected_grbs: grb <span class="py-output">26:Geopotential height:gpm (instant):regular_ll:isobaricInhPa:level 10 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span> <span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-comment"># to select multiple specific key values, use containers (e.g. sequences)</span> <span class="py-prompt">>>> </span>selected_grbs=grbs(shortName=[<span class="py-string">'u'</span>,<span class="py-string">'v'</span>],typeOfLevel=<span class="py-string">'isobaricInhPa'</span>,level=[10,50]) <span class="py-prompt">>>> </span><span class="py-keyword">for</span> grb <span class="py-keyword">in</span> selected_grbs: grb <span class="py-output">193:u-component of wind:m s**-1 (instant):regular_ll:isobaricInhPa:level 50 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span> <span class="py-output">194:v-component of wind:m s**-1 (instant):regular_ll:isobaricInhPa:level 50 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span> <span class="py-output">199:u-component of wind:m s**-1 (instant):regular_ll:isobaricInhPa:level 10 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span> <span class="py-output">200:v-component of wind:m s**-1 (instant):regular_ll:isobaricInhPa:level 10 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span> <span class="py-output"></span><span class="py-prompt">>>> </span><span class="py-comment"># to select key values based on a conditional expression, use a function</span> <span class="py-prompt">>>> </span>selected_grbs=grbs(shortName=<span class="py-string">'gh'</span>,level=<span class="py-keyword">lambda</span> l: l < 500 <span class="py-keyword">and</span> l >= 300) <span class="py-prompt">>>> </span><span class="py-keyword">for</span> grb <span class="py-keyword">in</span> selected_grbs: grb <span class="py-output">14:Geopotential height:gpm (instant):regular_ll:isobaricInhPa:level 45000 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span> <span class="py-output">15:Geopotential height:gpm (instant):regular_ll:isobaricInhPa:level 40000 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span> <span class="py-output">16:Geopotential height:gpm (instant):regular_ll:isobaricInhPa:level 35000 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span> <span class="py-output">17:Geopotential height:gpm (instant):regular_ll:isobaricInhPa:level 30000 Pa:fcst time 72 hrs:from 200412091200:lo res cntl fcst</span></pre> <dl class="fields"> </dl> </td></tr></table> </div> <br /> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Home link --> <th> <a href="pygrib-module.html">Home</a> </th> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <th class="navbar" width="100%"></th> </tr> </table> <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> Generated by Epydoc 3.0.1 on Mon Oct 21 13:23:56 2013 </td> <td align="right" class="footer"> <a target="mainFrame" href="http://epydoc.sourceforge.net" >http://epydoc.sourceforge.net</a> </td> </tr> </table> <script type="text/javascript"> <!-- // Private objects are initially displayed (because if // javascript is turned off then we want them to be // visible); but by default, we want to hide them. So hide // them unless we have a cookie that says to show them. checkCookie(); // --> </script> </body> </html>