Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #103729
| Path | csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail |
|---|---|
| From | Ian Kelly <ian.g.kelly@gmail.com> |
| Newsgroups | comp.lang.python |
| Subject | Re: common mistakes in this simple program |
| Date | Mon, 29 Feb 2016 09:29:21 -0700 |
| Lines | 92 |
| Message-ID | <mailman.21.1456763409.20602.python-list@python.org> (permalink) |
| References | <CACT3xuWUk02Or78XHTdkFLsy6CMVHEYKOyid3hFJxw8Wh6-g1A@mail.gmail.com> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=UTF-8 |
| X-Trace | news.uni-berlin.de Emq6sP1Y8MCly8S5GLX7EgdWDEt+6NjcCOzTLde3PS+A== |
| Return-Path | <ian.g.kelly@gmail.com> |
| X-Original-To | python-list@python.org |
| Delivered-To | python-list@mail.python.org |
| X-Spam-Status | OK 0.000 |
| X-Spam-Evidence | '*H*': 1.00; '*S*': 0.00; '"""': 0.05; 'sys': 0.05; '__name__': 0.07; 'caller': 0.07; 'except:': 0.07; 'exception.': 0.07; 'main()': 0.07; 'versions.': 0.07; 'cc:addr:python-list': 0.09; '%s\\n"': 0.09; 'cmd': 0.09; 'func': 0.09; 'here?': 0.09; 'imported': 0.09; 'python': 0.10; '"this': 0.13; 'exception': 0.13; 'def': 0.13; 'instead.': 0.15; '"mkdir': 0.16; "'__main__':": 0.16; '2016': 0.16; 'clustering': 0.16; 'docstring': 0.16; 'e))': 0.16; 'err,': 0.16; 'inspect,': 0.16; 'main():': 0.16; 'pdb': 0.16; 'preparing': 0.16; 'pythonic': 0.16; 'raises.': 0.16; 'received:io': 0.16; 'received:psf.io': 0.16; 'reraise': 0.16; 'subject:program': 0.16; 'subject:simple': 0.16; 'subprocess': 0.16; 'systemexit': 0.16; 'unsupported': 0.16; 'wrote:': 0.16; 'try:': 0.18; 'version.': 0.18; 'cc:2**0': 0.20; 'cc:addr:python.org': 0.20; '%s"': 0.22; 'exceptions': 0.22; 'am,': 0.23; 'feb': 0.23; 'import': 0.24; 'header:In-Reply-To:1': 0.24; 'mon,': 0.24; 'module': 0.25; 'logging': 0.27; 'message- id:@mail.gmail.com': 0.27; '2.6': 0.27; 'function': 0.28; 'this.': 0.28; 'ret': 0.29; 'code': 0.30; 'generally': 0.32; 'run': 0.33; 'raised': 0.33; 'except': 0.34; 'handle': 0.34; 'received:google.com': 0.35; 'false': 0.35; 'returning': 0.35; 'something': 0.35; 'expected': 0.35; 'but': 0.36; 'should': 0.36; 'received:209.85': 0.36; 'modules': 0.36; 'subject:: ': 0.37; 'expect': 0.37; 'received:209.85.213': 0.37; 'things': 0.38; 'received:209': 0.38; 'log': 0.38; 'mean': 0.38; 'means': 0.39; 'where': 0.40; 'your': 0.60; 'further': 0.62; 'above,': 0.63; 'more': 0.63; 'wanting': 0.66; 'here': 0.66; 'completed': 0.69; 'catch?': 0.84; 'subject:common': 0.84; 'using.': 0.84; 'subject:this': 0.85; 'to:none': 0.91; '2013.': 0.96 |
| DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:cc; bh=XNNaK8IzqIbBYy7e1S4jyXiUWQKPKxpcxlhZL2w4+ds=; b=qniBAtnrLx4MdmkMmfXRg+dvNkE6+bEdK9RYLwaqbW0AVPrN5EMY7o5uZTZ1/GxEtx nBw7NXiqWndIlC78wdhI/AX4u84MBsrThNFRNpyBFno47MNVZKrVkkQkb4E7MxpMEpCY dogh5Cx/EyfMsaw8sAyHQjMbZSGFHZ14Q0+dhUZhia5ffo2AevUzCYRVFQCmyeDA2S+/ eDleyFZ5H0tsINrWsq0s5y5+nij5JSAM2JVlYcZx9kjLNmSMGVB5HcwFHuU+OUFyfBXV 15CjrGOWwF8ht9WG5q750xzCg92NmvsiF+yTHLBv0zmPY9syYDiNzU5/TwVe7J3qq5+u P/2g== |
| X-Google-DKIM-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:cc; bh=XNNaK8IzqIbBYy7e1S4jyXiUWQKPKxpcxlhZL2w4+ds=; b=A1felO6tSu7CE1bD+5cFDRHQm3NJPRv2wMTQaPnBd7Do6Il6W07uUhWoSa3zAvoFlb ULY0BRbvoyf+hZNAsT5xQEJlnZ8SQjwBEfA2UI4YyUi/T+c5L+jP+Q/OfUp4k9QpRPjF GKz5ZRzUTlequH+KgwFk2dnrcbcZkhemlsGRaq72elfpf7F2YlT+dbFh/03fqgadNp8f 7QwmAAnA6aB08AcYJBPkkTWV6kuQ2nHbkEa9ix7tPK69qeeMHJg5tyIKh18LecuEy6BL Phv3h04vf04gCFbCKlvgNp803YvrtjX8MOifYtqA+b4YqpwK43XnCdf2mtYfkzWR3SNP PiwQ== |
| X-Gm-Message-State | AD7BkJKEQpDp4UTaLA1DmmEKivul+dzRVPKc4DxYro4L5XzoNu/mDDvrLrZSKvENzkJzehFnIbcVQl/OyKNz+A== |
| X-Received | by 10.50.131.201 with SMTP id oo9mr10256040igb.68.1456763400532; Mon, 29 Feb 2016 08:30:00 -0800 (PST) |
| In-Reply-To | <CACT3xuWUk02Or78XHTdkFLsy6CMVHEYKOyid3hFJxw8Wh6-g1A@mail.gmail.com> |
| X-BeenThere | python-list@python.org |
| X-Mailman-Version | 2.1.21 |
| Precedence | list |
| List-Id | General discussion list for the Python programming language <python-list.python.org> |
| List-Unsubscribe | <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe> |
| List-Archive | <http://mail.python.org/pipermail/python-list/> |
| List-Post | <mailto:python-list@python.org> |
| List-Help | <mailto:python-list-request@python.org?subject=help> |
| List-Subscribe | <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe> |
| Xref | csiph.com comp.lang.python:103729 |
Show key headers only | View raw
On Mon, Feb 29, 2016 at 8:18 AM, Ganesh Pal <ganesh1pal@gmail.com> wrote:
> Iam on python 2.6
Python 2.6 has been unsupported since October 2013. Among other
things, that means it is no longer receiving security updates like
more recent versions. Unless you have an extremely strong reason for
wanting to stay to Python 2.6, you should update your Python version.
> 1. usage of try- expect
try-except in every single function is a code smell. You should only
be using it where you're actually going to handle the exception. If
you catch an exception just to log it, you generally should also
reraise it so that something further up the call chain has the
opportunity to handle it.
> 2. Return of True/ False
If you're returning True to mean "This completed without exception"
and False to mean "This raised an exception", then the more Pythonic
thing to do would just be to let the exception propagate, giving the
caller the opportunity to catch, inspect, and handle the exception.
> """
> """
An empty docstring is pointless.
> import os
> import shlex
> import subprocess
> import sys
> import time
> import logging
> import run
> import pdb
Most of these are unused. Only import modules that your code is actually using.
> def run_cmd_and_verify(cmd, timeout=1000):
> try:
> pdb.set_trace()
> out, err, ret = run(cmd, timeout=timeout)
What is "run"? It's imported like a module above, but here you're
using it like a function.
> assert ret ==0,"ERROR (ret %d): " \
> " \nout: %s\nerr: %s\n" % (ret, out, err)
> except Exception as e:
> print("Failed to run %s got %s" % (cmd, e))
> return False
> return True
>
> def prep_host():
> """
> Prepare clustering
> """
> for cmd in ["ls -al",
> "touch /tmp/file1",
> "mkdir /tmp/dir1"]:
> try:
> if not run_cmd_and_verify(cmd, timeout=3600):
> return False
> except:
What exceptions are you expecting this to catch? run_cmd_and_verify
already catches any expected exceptions that it raises.
Also, you should almost never use a bare except like this. Use "except
Exception" instead. A bare except will catch things like
KeyboardInterrupt and SystemExit that should not be caught.
> print("Error: While preparing cluster !!!")
> return False
> print("Preparing Cluster.....Done !!!")
> return True
>
>
> def main():
> functions = [prep_host]
> for func in functions:
> try:
> func()
> except Exception as e:
As above, what exceptions are you expecting here?
> print(e)
> return False
> if __name__ == '__main__':
> main()
Back to comp.lang.python | Previous | Next — Next in thread | Find similar | Unroll thread
Re: common mistakes in this simple program Ian Kelly <ian.g.kelly@gmail.com> - 2016-02-29 09:29 -0700 Re: common mistakes in this simple program Steven D'Aprano <steve@pearwood.info> - 2016-03-01 23:00 +1100
csiph-web