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