On 2/2/07, Danny Yoo <[EMAIL PROTECTED]> wrote:

> I'm trying to read a binary file using struct.  This code works
> interactively in the IPython shell, but not as a function invoked from a
> command line (Windows).  Can someone point out my error?  Thanks!

Hi Marcus,

There is something very suspicious in the code.  You don't happen to have
any global variables in your program, do you?

Let me underline what you might want to look at.


> def demux(filename, channel, nchannels):
             ^^^^^^^^


Danny,
Sorry, I had a typo.  Attached below is the complete code actually copied
from my editor.  Notice that it doesn't do anything now, which is fine b.c.
I just want to troubleshoot the problem.  The error is reproduced as a
comment below the source.  As far as I know, there are no globals; I am
invoking this from a command line prompt: python demux.py foo.bin 1 1


# ---
import struct

def demux(fname, ch=1, nchan=1):
   fmt = str(nchan) + 'h'          # nchan of short (int16)
   blockSize = struct.calcsize(fmt)

   # file setup
   infile  = open(fname, 'rb')
   #outfile = open(fname + 'ch' + str(ch), 'wb')

   # iterate over data
   chunk = infile.read(blockSize)
   while chunk:
       x = struct.unpack(fmt, chunk)
       chunk = infile.read(blockSize)

   # file cleanup
   # outfile.close()
   infile.close()

# -------------------------------------------------------------------------
#   main()
#  -------------------------------------------------------------------------
def main(argv=None):
   if argv is None:
       printHelp()
   demux(argv[1], int(argv[2]), int(argv[3]))     # filename, ch, nchans


if __name__ == "__main__":
   import sys
   sys.exit(main(sys.argv))


# C:\python\python demux.py demux.py 1 1
# Traceback (most recent call last):
#   File "demux.py", line xx, in ?
#     sys.exit(main(sys.argv))
#   File "demux.py", line xx, in main
#     demux(argv[1], int(argv[2]), int(argv[3]))     # filename, ch, nchans
#   File "demux.py", line xx, in demux
#     x = struct.unpack(fmt, chunk)
# struct.error: unpack str size does not match format
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to