module file length limitations on windows?

Steve Holden steve at holdenweb.com
Thu Dec 16 13:47:58 EST 2004


Lonnie Princehouse wrote:

> I've run into some eccentric behavior...  It appears that one of my
> modules is being cut off at exactly 2^14 characters when I try to
> import it.  Has anyone else encountered this?  I can't find any mention
> of such a bug, and stranger yet, other modules that exceed 16384
> characters seem to work just fine.
> 
> In particular, suppose that my module foo.py contains the following as
> its last line:
> 
> thing = "goodbye world"
> 
> Now, suppose that the length of the file is 16383 characters.  It works
> just fine:
> 
> Python 2.4 (#60, Nov 30 2004, 11:49:19) [MSC v.1310 32 bit (Intel)] on
> win32
> Type "help", "copyright", "credits" or "license" for more information.
> 
>>>>import foo
>>>>
> 
> 
> But if I make the string longer, it explodes:
> 
> thing = "goodbye world spam spam spam spam spam"
> 
> Python 2.4 (#60, Nov 30 2004, 11:49:19) [MSC v.1310 32 bit (Intel)] on
> win32
> Type "help", "copyright", "credits" or "license" for more information.
> 
>>>>import foo
> 
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> File "foo.py", line 583
> thing = "goodbye world sp
> ^
> SyntaxError: EOL while scanning single-quoted string
> 
> 
> What in the world is going on here?!
> 
> This happens with Python 2.4 and 2.3.4 on win2k (under vmware), but it
> does _not_ happen with 2.3.4 on Linux.   Very strange!  Could vmware be
> the problem?
> 
> I have also tried replacing my unix newlines with DOS \r\n with the
> exact same result.
> 
> I don't want to spend much time on this, since the workaround of
> splitting the code into smaller files works just fine, but wow.. weird.
> 
As a further data point, it doesn't appear to happen under Cygwin with 
2.4 either:

sholden at dellboy ~
$ wc module.py
    8177       2    8191 module.py

sholden at dellboy ~
$ python
Python 2.4 (#1, Dec  4 2004, 20:10:33)
[GCC 3.3.3 (cygwin special)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
 >>> import module
hello
 >>>

sholden at dellboy ~
$ vi module.py

sholden at dellboy ~
$ wc module.py
    8177       5    8206 module.py

sholden at dellboy ~
$ python
Python 2.4 (#1, Dec  4 2004, 20:10:33)
[GCC 3.3.3 (cygwin special)] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
 >>> import module
hello spam spam spam

Is it possible you've somehow inserted non-printing characters? Seems 
bizarrely improbable to me that 2^14 would be a significant boundary to 
the interpreter.

regards
  Steve
-- 
Steve Holden               http://www.holdenweb.com/
Python Web Programming  http://pydish.holdenweb.com/
Holden Web LLC      +1 703 861 4237  +1 800 494 3119



More information about the Python-list mailing list