[python] DOS 8+3
Radek Svarz
py.cz na svarz.cz
Pátek Leden 21 13:36:48 CET 2005
To je divný, že GetShortPathName vrací tuhle formu. Správný DOS name by
totiž po překladu neměl mít nabodeníčka.
Příklad (na winxp):
soubor: "c:\test\dir\čeština v adresáři\nějaký fajl.txt"
dos name: c:\test\dir\ETINAV~1\NJAKFA~1.TXT
Tohle mi funguje:
>>> import os
>>> import win32api
>>> os.path.abspath('')
'c:\\test\\dir\\\xe8e\x9atina v adres\xe1\xf8i'
>>> d = _
>>> win32api.GetShortPathName(d)
'c:\\test\\dir\\ETINAV~1'
Ale přímo na fajl mi to řve:
>>> d2='c:\\test\\dir\\čeština v adresáři\\nějaký fajl.txt'
>>> d2
'c:\\test\\dir\\\x9fe\xe7tina v adres\xa0\xfdi\\n\xd8jak\xec fajl.txt'
>>> win32api.GetShortPathName(d2)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
pywintypes.error: (3, 'GetShortPathName', 'Syst\xe9m nem\xf9\x9ee
nal\xe9zt uved
enou cestu.')
Nicméně, když si srovnám d a d2, tak je rozdíl v kódování:
>>> d
'c:\\test\\dir\\\xe8e\x9atina v adres\xe1\xf8i'
>>> d2
'c:\\test\\dir\\\x9fe\xe7tina v adres\xa0\xfdi\\n\xd8jak\xec fajl.txt'
Takže tam někde bude zakopaný pes.
Radek
p.kosina napsal(a):
> Díky.
> Mám ještě problém s češtinou. Pod w2000 script jede bez problémů, ale ve
> w98 je výsledný řetězec např.: c:\WWW\ŠTĚPÁN~1\ĚŠČĚŮŽ~1.HTM, tedy s
> českými znaky a firefox to prostě nepřijímá.
>
> Zkoušel jsem, spíše metodou pokus omyl, různá kodovani, ale bez úspěchu.
> Nevěděl by někdo?
>
> hlavní část skriptu:
> cestaTest=r"c:\WWW\Štěpánka Pelešková\ĚŠČĚ ůžřššř ůšč řšč.htm"
> cesta=os.path.abspath(cestaTest)
> cestaDOS=win32api.GetShortPathName(cesta) # vytvoreni cesty 8+3
> # neznam vyznam druheho argumentu, ale bez nej to nejede...
> os.execl(program, 'x', '-url', cestaDOS)
>
> Diky
>
>
> Radek Svarz napsal(a):
>
>> Zkuste:
>>
>> import win32api
>> import os
>>
>> dir = os.path.abspath('')
>> win32api.GetShortPathName(dir)
>>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://hugo.zagamma.cz/mailman/listinfo/python
>
Další informace o konferenci Python