[python] Kratka DOSova jmena (bylo SQLite Windows)

Leos Pol leos na radiante-corp.com
Pondělí Únor 27 15:20:55 CET 2006


Petr Prikryl wrote:
> (Dík, geone, za nakopnutí ;)
>
>   
>> Radek Svarz napsal(a):
>>     
>>> [...] zkuste pouzit "short DOS name" cestu. Ta 
>>> nabodenicka nema.
>>>       
>>  
>> pepr
>>     
>>> Jenže takovou cestu si nemohu spolehlivě uschovat, protože
>>> Windows nezaručí, že se za chvíli (za určitých okolností)
>>> nebude jmenovat jinak.
>>>       
>
> Vyzkoušejte:
>
> a.py
> ---------------------------------------------------------
> import os
> import win32api
>
> def q(text):
>     return "'" + text + "'"
>
> os.mkdir('aaaaaaaaaaaaA')
> os.mkdir('aaaaaaaaaaaaB')
> os.mkdir('aaaaaaaaaaaaC')
> os.mkdir('aaaaaaaaaaaaD')
>
> for item in os.listdir('.'):
>     if os.path.isdir(item):
>         print q(item), q(win32api.GetShortPathName(item))
>
> os.rmdir('aaaaaaaaaaaaB')
> os.rmdir('aaaaaaaaaaaaC')
> os.rmdir('aaaaaaaaaaaaD')
>
> print '-' * 70
>
> os.mkdir('aaaaaaaaaaaaE')
> os.mkdir('aaaaaaaaaaaaF')
> os.mkdir('aaaaaaaaaaaaG')
> os.mkdir('aaaaaaaaaaaaH')
>
> lst = os.listdir('.')
> for item in lst:
>     if os.path.isdir(item):
>         print q(item), q(win32api.GetShortPathName(item))
>
> for item in lst:
>     if os.path.isdir(item):
>         os.rmdir(item)
> ---------------------------------------------------------
>
> V mém případě to vrací 
>
> C:\tmp\a>python a.py
> 'aaaaaaaaaaaaA' 'AAAAAA~1'
> 'aaaaaaaaaaaaB' 'AAAAAA~2'
> 'aaaaaaaaaaaaC' 'AAAAAA~3'
> 'aaaaaaaaaaaaD' 'AAAAAA~4'
> ---------------------------
> 'aaaaaaaaaaaaA' 'AAAAAA~1'
> 'aaaaaaaaaaaaE' 'AAAAAA~2'
> 'aaaaaaaaaaaaF' 'AAAAAA~3'
> 'aaaaaaaaaaaaG' 'AAAAAA~4'
> 'aaaaaaaaaaaaH' 'AABDBB~1'
>
> Takže například, když si někde schovám AAAAAA~2, 
> nevím v budoucnu, jakému adresáři to vlastně 
> odpovídá. Raději by se to mělo řešit jinak.
>
>   
Na prevod zpet se pak muze pouzit api fce GetLongPathName:

     >>> import win32api
     >>> short = win32api.GetShortPathName('c:/program files')
     >>> win32api.GetLongPathName(short)
    'c:/Program Files'
     >>>

Leo
> pepr
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>   


-- 
----
Leos Pol
SW Engineer
Radiante Corp.

If it can be imagined,
we can implement it




Další informace o konferenci Python