Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder1.news.weretis.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.003 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'else:': 0.03; 'except:': 0.07; 'exception.': 0.07; 'try:': 0.07; 'name)': 0.09; 'subject:ctypes': 0.09; 'from:addr:mrabarnett.plus.com': 0.16; 'from:addr:python': 0.16; 'from:name:mrab': 0.16; 'message- id:@mrabarnett.plus.com': 0.16; 'oserror:': 0.16; 'wrote:': 0.17; 'load': 0.19; 'trying': 0.21; 'work.': 0.23; "i've": 0.23; 'tried': 0.25; 'header:In-Reply-To:1': 0.25; 'header:User- Agent:1': 0.26; 'dll': 0.27; "doesn't": 0.28; 'this?': 0.28; '"no': 0.29; 'received:192.168.1.3': 0.29; "i'm": 0.29; 'code': 0.31; 'print': 0.32; 'to:addr:python-list': 0.33; 'there': 0.35; 'except': 0.36; 'but': 0.36; 'available.': 0.37; 'subject:: ': 0.38; 'some': 0.38; 'to:addr:python.org': 0.39; 'received:192': 0.39; 'received:192.168': 0.40; 'below,': 0.60; 'header:Reply- To:1': 0.68; 'reply-to:no real name:2**0': 0.72; 'reply- to:addr:python.org': 0.84 X-CM-Score: 0.00 X-CNFS-Analysis: v=2.0 cv=OqzNOlDt c=1 sm=1 a=0nF1XD0wxitMEM03M9B4ZQ==:17 a=AAvI7MrX_rgA:10 a=_Kp78WApHbEA:10 a=ihvODaAuJD4A:10 a=OUOv7kDek9cA:10 a=8nJEP1OIZ-IA:10 a=EBOSESyhAAAA:8 a=8AHkEIZyAAAA:8 a=HWHhYzFf8OoA:10 a=fDPNQolOzXTLmtWEJXgA:9 a=wPNLvfGTeEIA:10 a=0nF1XD0wxitMEM03M9B4ZQ==:117 X-AUTH: mrabarnett:2500 Date: Fri, 12 Oct 2012 17:57:02 +0100 From: MRAB User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:15.0) Gecko/20120907 Thunderbird/15.0.1 MIME-Version: 1.0 To: python-list@python.org Subject: Re: Checking for dlls in ctypes References: <975da919-c70a-492a-9d49-62254a76eb6c@googlegroups.com> In-Reply-To: <975da919-c70a-492a-9d49-62254a76eb6c@googlegroups.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: python-list@python.org List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 34 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1350061025 news.xs4all.nl 6886 [2001:888:2000:d::a6]:36221 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:31168 On 2012-10-12 16:36, Wanderer wrote: > I'm trying to write some code that will load one of three dll depending on the one available. I've tried the code below, but it doesn't work. The try except doesn't catch the exception. Is there a way to do this? > > try: > self.dll = windll.pvcam64 > except: > print "No pvcam64" > try: > self.dll = windll.pvcam32 > except: > print "No pvcam32" > try: > self.dll = windll.pvcam > except: > print "No pvcam" > return > else: > print "installed pvcam" > else: > print "installed pvcam32" > else: > print "installed pvcam64" > This works for me: for name in ("pvcam64", "pvcam32", "pvcam"): try: self.dll = getattr(windll, name) except OSError: print "No " + name else: print "Installed " + name return