Re: os.path.getmtime on windows, error: 206 - path or extension too long

2009-01-22 Thread Gabriel Genellina

En Wed, 21 Jan 2009 08:50:53 -0200, mynthon  escribió:


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

[...]

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?


win32api is part of the pywin32 package, available at http://pywin32.sf.net
This is not a Python standard package - you either installed it yourself  
some time ago (and forgot about it) or perhaps you're using the Enthought  
bundle (which includes pywin32 and PythonWin). Either way, you surely have  
the PyWin32.chm help file installed too.


En Wed, 21 Jan 2009 12:11:03 -0200, mynthon  escribió:


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


Looks like you found the "official" answer to your problem. Notice that  
the path must be "normalized" in this case - that means, it must not  
contain "." nor ".." components.


--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list


Re: os.path.getmtime on windows, error: 206 - path or extension too long

2009-01-21 Thread mynthon
On Jan 21, 2:58 pm, mynthon  wrote:
> On Jan 21, 2:13 pm, mynthon  wrote:
>
>
>
> > On Jan 21, 11:50 am, mynthon  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 "", line 1, in 
> > 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


Re: os.path.getmtime on windows, error: 206 - path or extension too long

2009-01-21 Thread mynthon
On Jan 21, 2:13 pm, mynthon  wrote:
> On Jan 21, 11:50 am, mynthon  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 "", line 1, in 
> 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:\\'
--
http://mail.python.org/mailman/listinfo/python-list


Re: os.path.getmtime on windows, error: 206 - path or extension too long

2009-01-21 Thread mynthon
On Jan 21, 11:50 am, mynthon  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 "", line 1, in 
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)






--
http://mail.python.org/mailman/listinfo/python-list


os.path.getmtime on windows, error: 206 - path or extension too long

2009-01-21 Thread mynthon
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)
--
http://mail.python.org/mailman/listinfo/python-list