[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