[Python-Dev] Identifying magic prefix on Python files?

Fredrik Lundh fredrik@effbot.org
Mon, 5 Feb 2001 07:35:02 +0100


tim wrote:
> Then you have /F's post, which purports to give a "fully backward
> compatible" scheme, despite changing what probably appears <wink> to be
> almost everyting.

unlike earlier proposals, it doesn't break py_compile:

    MAGIC = imp.get_magic()

    fc = open(cfile, 'wb')
    fc.write('\0\0\0\0')
    wr_long(fc, timestamp)
    marshal.dump(codeobject, fc)
    fc.flush()
    fc.seek(0, 0)
    fc.write(MAGIC)
    fc.close()

and it doesn't break imputil:

    f = open(file, 'rb')
    if f.read(4) == imp.get_magic():
        t = struct.unpack('<I', f.read(4))[0]
        if t == t_py:
            code = marshal.load(f)

and it doesn't break any user code that does similar things
(squeeze, pythonworks, and a dozen other tools I've written;
applications using local copies of imputils, etc)

Cheers /F