I found an answer to this over on Stackoverflow.<br><a href="http://stackoverflow.com/questions/919369/resize-ctypes-array">http://stackoverflow.com/questions/919369/resize-ctypes-array</a><br><br><div class="gmail_quote">
On Thu, May 28, 2009 at 1:25 AM, Scott Sibley <span dir="ltr"><<a href="mailto:sisibley@gmail.com">sisibley@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>
                <p>I'd like to resize a ctypes
array. As you can see, ctypes.resize doesn't work like it could. I can
write a function to resize an array, but I wanted to know some other
solutions to this. Maybe I'm missing some ctypes trick or maybe I
simply used resize wrong. The name c_long_Array_0 seems to tell me this
may not work like I want. What is resize meant for?<br></p>

<pre><code><span>>>></span><span> </span><span>from</span><span> ctypes </span><span>import</span><span> </span><span>*</span><span><br>
</span><span>>>></span><span> c_int </span><span>*</span><span> </span><span>0</span><span><br></span><span><</span><span>class</span><span> </span><span>'__main__.c_long_Array_0'</span><span>></span><span><br>


</span><span>>>></span><span> intType </span><span>=</span><span> c_int </span><span>*</span><span> </span><span>0</span><span><br>
</span><span>>>></span><span> foo </span><span>=</span><span> intType</span><span>()</span><span><br></span><span>>>></span><span> foo<br>
</span><span><</span><span>__main__</span><span>.</span><span>c_long_Array_0 </span><span>object</span><span> at </span><span>0xb7ed9e84</span><span>></span><span><br>
</span><span>>>></span><span> foo</span><span>[</span><span>0</span><span>]</span><span><br></span><span>Traceback</span><span> </span><span>(</span><span>most recent call </span><span>last</span><span>):</span><span><br>


  </span><span>File</span><span> </span><span>"<stdin>"</span><span>,</span><span> line </span><span>1</span><span>,</span><span> </span><span>in</span><span> </span><span><</span><span>module</span><span>></span><span><br>


</span><span>IndexError</span><span>:</span><span> invalid index<br></span><span>>>></span><span> resize</span><span>(</span><span>foo</span><span>,</span><span> </span><span>sizeof</span><span>(</span><span>c_int </span><span>*</span><span> </span><span>1</span><span>))</span><span><br>


</span><span>>>></span><span> foo</span><span>[</span><span>0</span><span>]</span><span><br></span><span>Traceback</span><span> </span><span>(</span><span>most recent call </span><span>last</span><span>):</span><span><br>


  </span><span>File</span><span> </span><span>"<stdin>"</span><span>,</span><span> line </span><span>1</span><span>,</span><span> </span><span>in</span><span> </span><span><</span><span>module</span><span>></span><span><br>


</span><span>IndexError</span><span>:</span><span> invalid index<br></span><span>>>></span><span> foo<br></span><span><</span><span>__main__</span><span>.</span><span>c_long_Array_0 </span><span>object</span><span> at </span><span>0xb7ed9e84</span><span>></span><span><br>


</span><span><br></span></code></pre><p>Maybe go with something like:</p>

<pre><code><span>>>></span><span> ctypes_resize </span><span>=</span><span> resize<br></span><span>>>></span><span> </span><span>def</span><span> resize</span><span>(</span><span>arr</span><span>,</span><span> type</span><span>):</span><span><br>


</span><span>...</span><span>     tmp </span><span>=</span><span> type</span><span>()</span><span><br></span><span>...</span><span>     </span><span>for</span><span> i </span><span>in</span><span> range</span><span>(</span><span>len</span><span>(</span><span>arr</span><span>)):</span><span><br>


</span><span>...</span><span>         tmp</span><span>[</span><span>i</span><span>]</span><span> </span><span>=</span><span> arr</span><span>[</span><span>i</span><span>]</span><span><br>
</span><span>...</span><span>     </span><span>return</span><span> tmp<br></span><span>...</span><span>     <br></span><span>...</span><span> <br>
</span><span>>>></span><span> listType </span><span>=</span><span> c_int </span><span>*</span><span> </span><span>0</span><span><br>
</span><span>>>></span><span> list </span><span>=</span><span> listType</span><span>()</span><span><br></span><span>>>></span><span> list </span><span>=</span><span> resize</span><span>(</span><span>list</span><span>,</span><span> c_int </span><span>*</span><span> </span><span>1</span><span>)</span><span><br>


</span><span>>>></span><span> list</span><span>[</span><span>0</span><span>]</span><span><br></span><span>0</span><span><br>
</span><span>>>><br><br><br>But that's ugly passing the type instead of the size. It works for its purpose and that's it.<br><br></span><span></span></code></pre>

            </div>
</blockquote></div><br>