Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[python] Test vložení diskety pod windows-y

0 views
Skip to first unread message

zu1234

unread,
Apr 19, 2008, 5:14:37 PM4/19/08
to Konference PyCZ
Zdravím!

Neznáte někdo hezčí řešení, které by otestovalo
zda je vložena disketa čistějším způsobem,
bez volání dos-ového dir-u
(a bez vyskakování windows message okna "Chybí disk")?

dos_cmd='dir /s '+ fi_arch
check_file=os.popen(dos_cmd)
line = check_file.readline()
if not line:
print u"Jednotka není připravena"

Jen mne zajímá zda jsem něco neopomenul.

Díky, ZU

zu1234

unread,
Apr 20, 2008, 6:02:46 AM4/20/08
to Konference PyCZ
Bohužel,
i tento pokus nevyvolá chybu,
s kterou by bylo možno již něco vymyslet,
ale rovnou vyvolává systémové message okno "Chybí disk".

To ten "dir" je lepší, bohužel.

Ale děkuji za reakci!
ZU


Marek Palatinus napsal(a):
> Pokud si dobre pamatuji (a diskety jsem nevidel uz mnoho, mnoho let),
> tak disketova mechanika nema zadnou detekci pritomnosti media (na rozdil
> od CDROM). Tj. muzete proste zkusit nejakou diskovou operaci a bud se
> povede nebo ne.
>
> Nemuzu to odzkouset, protoze nejsem hrdym majitelem disketove mechaniky,
> ale zkusil bych obalit do vyjimky neco jako
>
> try:
> os.path.exists("a:\neco_blablabla.txt")
> except:
>
> ''' zjistit, co to hodilo za vyjimku '''
>
> a zkusli bych, jestli z exception neco nepoznam...
>
> S pozdravem
> MP
>
> 2008/4/19 zu1234 <zu1...@seznam.cz <mailto:zu1...@seznam.cz>>:

superman

unread,
Apr 20, 2008, 6:20:52 AM4/20/08
to Konference PyCZ
Systémové message okno je reakce Windows na to, když si nenastavíte
vlastní režim ošetřování výjimek, a neodchytíte výjimku. To dělá každý
program. Vše je možné nastavit.

Jinak starý klasický trik je pokusit se otevřít soubor A:\NUL, který se
podaří otevřit, pokud máte v mechanice disketu.

Jinak také se dá přečíst velikost disku, což hází chybu, pokud disketa není.

A v neposlední řadě jde také zjistit, která písmena disku jsou
momentálně k dispozici, a která z nich jsou výměnné disky a rozšířit tak
funkci na otestování disket, USB flashek, CD/DVD mechanik, atd..

Miloslav Ponkrác

zu1234 napsal(a):

zu1234

unread,
Apr 20, 2008, 3:29:01 PM4/20/08
to Konference PyCZ
> Systémové message okno je reakce Windows na to, když si nenastavíte
> vlastní režim ošetřování výjimek, a neodchytíte výjimku. To dělá každý
> program. Vše je možné nastavit.
Jsem zelenáč, takže poprosil o trochu konkretizace jak se nastavuje
ošetřování vyjímek, (alespoň abych věděl co hledat :-)

> Jinak starý klasický trik je pokusit se otevřít soubor A:\NUL, který se
> podaří otevřit, pokud máte v mechanice disketu.
>
> Jinak také se dá přečíst velikost disku, což hází chybu, pokud disketa není.
>
> A v neposlední řadě jde také zjistit, která písmena disku jsou
> momentálně k dispozici, a která z nich jsou výměnné disky a rozšířit tak
> funkci na otestování disket, USB flashek, CD/DVD mechanik, atd..

Neměl byste i pro tohle nějaké příklad?
Moc děkuji za ochotu,
ZU

>
> Miloslav Ponkrác

Pavel Kosina

unread,
Apr 20, 2008, 3:43:50 PM4/20/08
to Konference PyCZ
zu1234 napsal(a):

> Jsem zelenáč, takže poprosil o trochu konkretizace jak se nastavuje
> ošetřování vyjímek, (alespoň abych věděl co hledat :-)
>

Hledej "python výjimky" nebo "python exceptions"


>
> Neměl byste i pro tohle nějaké příklad?
>

To tu dával již příklad Marek P. ....

Ahoj

--
geon
Pavel Kosina

Pavel Kosina

unread,
Apr 22, 2008, 4:52:52 AM4/22/08
to Konference PyCZ
zu1234 napsal(a):
> Asi jsme se nepochopili.
>
Možná. Co znamená to Windows okno nevím, ale mě tento skript funguje jak má:

Toto vypíše "error":
import os
try:
if os.path.exists(fi_arch):
print "ano"
else:
print "ne"
except:
print "error"

A toto vypíše "ne", přičemž předtím disketovka zachroupe:
import os
fi_arch = "a:/"
try:
if os.path.exists(fi_arch):
print "ano"
else:
print "ne"
except:
print "error"


Mám xpsp2 py2.5

--
geon
Pavel Kosina

zu1234

unread,
Apr 22, 2008, 7:53:49 AM4/22/08
to Konference PyCZ
Moc Vám děkuji za ochotu to u Vás zkusit!

Ale řešením problému s
Exception Processing Message c0000013 Parameters 75b6bf9c 4 75b6bf9c
75b6bf9c

je nastavení:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Windows\ErrorMode=2

Teda já to za řešení nepovažuji, ale je to alespoň vysvětlení.

http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2586411&SiteID=17&pageid=0

Děkuji,
ZU

superman

unread,
Apr 22, 2008, 1:08:16 PM4/22/08
to Konference PyCZ
Ano, přenastavit celý stroj kvůli jednomu programu a zničit veškeré
upozorňování na vážné chyby uživateli je fajn řešení.

zu1234 napsal(a):

> _______________________________________________
> Python mailing list
> Pyt...@py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
>

zu1234

unread,
Apr 22, 2008, 3:56:29 PM4/22/08
to Konference PyCZ
Dobrý večer vespolek.

Supermane, jednak jsem řekl že jsem začátečník,
jednak jsem napsal: "Teda já to za řešení nepovažuji, ale je to alespoň
vysvětlení".

A mimochodem, jak byste to řešil Vy?

Chudák pan Kosina, který byl ochotný to vyzkoušet, má evidentně ve svém
xpsp2 "zničeno veškeré upozorňování na vážné chyby".

ZU


superman napsal(a):

superman

unread,
Apr 22, 2008, 6:45:33 PM4/22/08
to Konference PyCZ
>A mimochodem, jak byste to řešil Vy?

Uvědomil bych si, že přenositelně to napsat nejde a obalil bych si pár
Win API funkcí buď sám pomocí Python C API, nebo bych použil modul win32.

Pomocí Win API funkce SetErrorMode(unsigned int mode) bych nastavil
režim chyb, který bych chtěl pro svůj program.

Pomocí Win API funkce GetLogicalDrives(), nebo GetLogicalDriveStrings()
bych zjistil, jaká písmena disků jsou k dispozici.

Win API funkce GetDriveType(string* adresar) mi umožní zjistit typ disku
- zda je disk výměnný, nebo ne.

A konečně pomocí funkce GetDiskFreeSpace(...), nebo
GetDiskFreeSpaceEx(...) bych se pokusil na daný výměnný disk sáhnout a
tato funkce vrací informaci o chybě, ze které jde vyčíst zda se
podařilo, případně proč ne (nejsou práva, disk není v mechanice, apod.).
(Detailnější informace jsou přístupné pomocí GetLastError()).

Miloslav Ponkrác

>Chudák pan Kosina, který byl ochotný to vyzkoušet, má evidentně ve
svém xpsp2 zničeno veškeré upozorňování na vážné chyby".

Vzhledem k tomu, že takto snadno může přehlédnou upozornění na vážnou hw
chybu například, takže může snadno přijít o data, aniž by dostal
jakékoli varování. Stejně mu můžou náhle mizet programy (které by
předtím normálně hlásily proč spadly), a další. A může klidně měsíc
hledat problém, na který by byl dávno předtím upozorněn.

Miloslav Ponkrác

zu1234

unread,
Apr 23, 2008, 2:20:23 AM4/23/08
to Konference PyCZ
Pane Ponkác,
to je přesně to co jsem potřeboval - jména odpovídajících API funkcí.

Podle toho už budu i já schopen pokračovat.

Děkuji Vám za tuto rozsáhlou a přesnou odpověď!!

ZU


superman napsal(a):

0 new messages