Unicode to DOS filenames (to call FSUM.exe)
DurumDara
durumdara at gmail.com
Mon May 15 07:48:29 EDT 2006
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
More information about the Python-list
mailing list