os.path.getmtime on windows, error: 206 - path or extension too long
mynthon
mynthon1 at gmail.com
Wed Jan 21 08:58:37 EST 2009
On Jan 21, 2:13 pm, mynthon <mynth... at gmail.com> wrote:
> On Jan 21, 11:50 am, mynthon <mynth... at gmail.com> wrote:
>
>
>
> > I have very long path on windows and i get error when try to get
> > modification time. So i tried do chdir path and then get file. It now
> > gives me error that file doesn't exists
>
> > # code
> > def getmtimeWIN32(p):
> > mycwd = os.getcwd()
>
> > if p.startswith('\\\\?\\'):
> > p = p.replace('\\\\?\\', '', 1)
>
> > p = os.path.splitdrive(p)
> > r = p[0] # root - dir name
> > p = p[1]
> > p = os.path.split(p)
> > f = p[1] # filename
> > d = p[0]
> > l = d.split('\\');
>
> > if r != '': # if root is not empty change to root (it not works
> > when script is on other partition than file)
> > os.chdir('/')
>
> > for i in l:
> > if i != '':
> > os.chdir(i)
> > #print i
> > print os.getcwd()
> > os.path.getmtime(f)
> > os.chdir(mycwd)
> > # /code
>
> > it works for other files so i suppose it is not my fault. I know there
> > is a win32 module but i can't find any documentation for it (what is
> > the purpose to create app without docs?). Any idea?
>
> > I searched google but there where only 2 options. Use chdir (not
> > working) or use win32api (where is no documentation).
>
> > (python 2.5)
>
> ok, what ive found:
>
> os.chdir('very_long_path')
> # works
>
> os.listdir('very_long_path')
> # gives:
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> TypeError: listdir() argument 1 must be (buffer overflow), not str
>
> os.chdir('very_long_path')
> os.listdir('.')
> #works
>
> os.chdir('very_long_path')
> os.path.getmtime(os.listdir('.')[0])
> #throws exception (path not exists)
>
> os.chdir('very_long_path')
> open(os.listdir('.')[0])
> #throws exception (path not exists)
i dont have a solution but workaround.
I can map long path as drive:
longPath = "c:\\documents and settings\\usermth\\my documents\
\......blablablabla"
# map path as drive b: (notice "" around path to avoid problems with
spaces)
os.system('subst b: "%s"' % longPath)
longPath = 'b:\\'
More information about the Python-list
mailing list