IMO python sám pozavírá otevřené soubory když garbage collector dělá úklid a zavolá destruktory osiřelým file instancím. Se zámky ti neporadím, to je wydláčtina :-) ale pokud chceš mít 100% jistotu že nic nezůstane, můžeš aplikovat "NKVD algoritmus" neboli zavřít pro jistotu všechny bez rozdílu:
for fd in range(0, os.sysconf_names.get("SC_OPEN_MAX", 1024)): try: os.close(fd) except OSError, ex: pass Ovšem to bych použil jen v krajním případě, protože přijdeš i o stdout. V každém případě bych se vyhnul hackům jako je atexit, uklidit po sobě můžeš už v handleru výjimky, resp. ve finally bloku. Pokud se chceš vyhnout opisování stále stejného bloku výjimky, použij context manager. Jednoduchá varianta je ve file objektu už zabudovaná: with open("spam", "w") as f: f.write("ham") ... Zavření je takto automatické, i když vystřelí výjimka. Napsat si vlastní kontext který soubor i smaže je trivka, viz r.t.f.m. :-) btw na dočasné soubory máme krásnou knihovnu tempfile. On 04/27/12 16:14, zu1234 wrote: > To snad není pravda!?! > Už jsem doma, takže se nemohu podívat do zdroje, > ale myslím že máte pravdu! > > Nicméně: domnívám se že Python sám po sys.exit() uzavře > všechny otevřené soubory a tak uvolní zámky, které by > bránili jejich smazání ve funkci pověšené na atexit. > > Ale proč tedy (oper. systém) ječí "Proces nemá > přístup k souboru neboť jej využívá jiný proces:"? > > Myslím že problém je v tom že uvolnění zámků trvá windows-ům > nějakou chvíli a požadavek na smazání přijde příliš rychle. > > Použil jsem time.sleep(5) před mazání a problémy se zámky > se ztratili. > > Nebo máte lepší nápad? > > Příští týden budu pokračovat. > Pro tento týden děkuji za reakce! > > ZU > > > Dne 27.4.2012 14:43, Hynek Fabian napsal(a): >>>> try: >>>> FI.write(PART) >>>> except: >>>> FI.close >>> >>> chybejici zavorky jsou predpokladam jenom chyba v emailu? >> >> To nepredpokladej. :-) Bez zavorek je to platny pythoni vyraz, ktery >> ovsem nic nezavre. >> _______________________________________________ >> Python mailing list >> Python@py.cz >> http://www.py.cz/mailman/listinfo/python >> > _______________________________________________ > Python mailing list > Python@py.cz > http://www.py.cz/mailman/listinfo/python _______________________________________________ Python mailing list Python@py.cz http://www.py.cz/mailman/listinfo/python