Re: Linux shell to python

Discussion in 'Python' started by Philipp Hagemeister, Jul 30, 2012.

  1. On 07/30/2012 01:31 PM, Jürgen A. Erhard wrote:
    > On Mon, Jul 30, 2012 at 12:35:38PM +0200, Philipp Hagemeister wrote:
    >> import subprocess
    >> [ l.partition(' ')[0] # or l[:7], if you want to copy it verbatim
    >> for l in subprocess.check_output(['lspci']).splitlines()
    >> if 'Q' in l and isp_str1 in l and isp_str2 in l
    >> ]

    >
    > Ouch. A list comprehension spanning more than one line is bad code
    > pretty much every time.


    I didn't want to introduce a separate function, but as requested, here's
    the function version:

    def pciIds(searchWords=['Q', isp_str1, isp_str2]):
    for l in subprocess.check_output(['lspci']).splitlines():
    if all(sw in l for sw in searchWords):
    yield l.partition(' ')[0]

    You could also separate the processing, like this:

    lines = subprocess.check_output(['lspci']).splitlines()
    lines = [l for l in lines if 'Q' in l and isp_str1 in l and isp_str2 inl]
    # Or:
    lines = filter(lambda l: 'Q' in l and isp_str1 in l and isp_str2 in l,
    lines)


    [l.partition(' ')[0] for l in lines]
    # Or:
    map(lambda l: l.partition(' ')[0], lines)

    But personally, I have no problem with three-line list comprehensions.
    Can you elaborate why the list comprehension version is bad code?

    Or more to the point, how would *you* write it?

    - Philipp



    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.12 (GNU/Linux)

    iEYEAREKAAYFAlAWdxUACgkQ9eq1gvr7CFxjRACfZ42cn6fVy9EIxX+eq+TMXHHD
    o7YAoLLWqX1zNkx2k8c+0w1vo/QI5vhq
    =f5yw
    -----END PGP SIGNATURE-----
    Philipp Hagemeister, Jul 30, 2012
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Replies:
    2
    Views:
    5,665
    Jonathan Bromley
    Feb 18, 2005
  2. Christian Heimes
    Replies:
    0
    Views:
    589
    Christian Heimes
    Feb 27, 2008
  3. Gerardo Herzig
    Replies:
    1
    Views:
    1,061
    Philipp Pagel
    Feb 27, 2008
  4. D'Arcy J.M. Cain
    Replies:
    0
    Views:
    850
    D'Arcy J.M. Cain
    Feb 27, 2008
  5. edwithad

    Bash shell to Python shell?

    edwithad, Sep 28, 2009, in forum: Python
    Replies:
    4
    Views:
    1,719
Loading...

Share This Page