[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