Bugs item #542314, was opened at 2002-04-10 21:23 Message generated for change (Comment added) made by stunorton You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=542314&group_id=5470
Category: Windows Group: Platform-specific Status: Open Resolution: None Priority: 5 Submitted By: Mark Hammond (mhammond) Assigned to: Nobody/Anonymous (nobody) Summary: long file name support broken in windows Initial Comment: >From c.l.py, thread "" Peter D: I'm using windows and trying to call os.path.getmtime () after using os.path.walk... However, I'm choking with "[Errno 38] Filename too long" on paths with len > ~260 Adding Martin's reply in a new comment (so it is not at the top of each and every mail I get on this bug :) ---------------------------------------------------------------------- Comment By: Stuart Norton (stunorton) Date: 2005-03-30 08:54 Message: Logged In: YES user_id=1152606 I came across this suggestion while googling... and I would have expected it to work, but this code: import os os.chdir("\\ussvs-file02 \radpubs\wip\zStaging\translation\D10 \previous_test\cumulative\Common\Reference\API\Borland .Eco.Persistence.Configuration\classes\PersistenceMapper DefinitionCollection\Methods") for filename in os.listdir("."): print filename infile = file(filename) gives me C:\Documents and Settings\snorton\Desktop\h2build\buildtools>test.py PersistenceMapperDefinitionCollection.AddRange.xml PersistenceMapperDefinitionCollection.Assign.xml PersistenceMapperDefinitionCollection.FindByName.xml PersistenceMapperDefinitionCollection.NameExists.xml PersistenceMapperDefinitionCollection.PersistenceMapperDefi nitionCollection.xml Traceback (most recent call last): File "C:\Documents and Settings\snorton\Desktop\h2build\buildtools\test.py", line 6, in ? infile = file(filename) IOError: [Errno 2] No such file or directory: 'PersistenceMapperDefinitionCollection.Persistence MapperDefinitionCollection.xml' ... funny that the file with the long path comes up in listdir() but isn't found with file()... ---------------------------------------------------------------------- Comment By: Mark Hammond (mhammond) Date: 2002-04-10 21:26 Message: Logged In: YES user_id=14198 Martin v. Loewis's reply on c.l.py: Since you are asking for a work-around: cd into one of the more nested directories when the path gets longer (os.chdir), and use relative paths from then on. If you want to study how to solve the problem: the relevant code snippet is in Modules/posixmodule.c /* the library call can blow up if the file name is too long! */ if (pathlen > MAX_PATH) { PyMem_Free(pathfree); errno = ENAMETOOLONG; return posix_error(); } There might be different ways to approach this: - challenge the correctness of the comment: - try to establish why the author of that code thought that the C library could blow up - analyse whether these arguments are still true with the current compiler version -or- - prove the argument wrong by analysing the source code of the C library - then remove the constraint -or- - use different API to achieve the same effect without suffering from the constraint. I'm serious about these suggestions: users would appreciate if this gets fixed somehow - apparently, the system allows longer file names, and apparently, the system itself can deal with that quite well. This can be only true if the system either doesn't use its C library, or if the C library does not have this restriction. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=105470&aid=542314&group_id=5470 _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com