John Machin írta: > According to my reading of the source, the function you have called > expects an 8-bit string. > ==== > static PyObject * > PyGetShortPathName(PyObject * self, PyObject * args) > { > char *path; > if (!PyArg_ParseTuple(args, "s:GetShortPathName", &path)) > ==== > If it is given Unicode, PyArg_ParseTuple will attempt to encode it > using the default encoding (ascii). Splat. > > Looks like you need a GetShortPathNameW() but it's not implemented. > Raise it as an issue on the pywin32 sourceforge bug register. Tell Mark > I sent you :-) > > It may be possible to fake up your default encoding to say cp1252 BUT > take the advice of anyone who screams "Don't do that!" and in any case > this wouldn't help you with a Russian, Chinese, etc etc filename. > > Another thought: try using ctypes. >
Hi ! I trying with that, but I get error, because the result is unicode too... :-((( from ctypes import windll, create_unicode_buffer, sizeof, WinError buf=create_unicode_buffer(512) if windll.kernel32.GetShortPathNameW(UFN,buf,sizeof(buf)): name=buf.value print [name] ###################################################### Commandline: C:\Python24\python.exe G:\SPEEDT~1\Module1.py Workingdirectory: G:\speedtest Timeout: 0 ms [u'G:\\SPEEDT~1\\xA\xff'] Process "Pyhton Interpeter" terminated, ExitCode: 00000000 ###################################################### Can I do anything with this unicoded filename ? My code must be universal ! Thanx for help: dd -- http://mail.python.org/mailman/listinfo/python-list