On Jan 21, 2:58 pm, mynthon <mynth...@gmail.com> wrote: > On Jan 21, 2:13 pm, mynthon <mynth...@gmail.com> wrote: > > > > > On Jan 21, 11:50 am, mynthon <mynth...@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:\\'
you can also use \\?\ prefix but ONLY FOR unicode strings os.path.getmtime("\\\\?\\c:\\very lon path\\blablabla") #will not work os.path.getmtime(u"\\\\?\\c:\\very lon path\\blablabla") #will work -- http://mail.python.org/mailman/listinfo/python-list