Slackware – check installed packages with Python

Querying installed package is something I do every now and then. It’s usually needed to find out if all the necessary dependencies of a package have been met. On Slackware it is usually accomplished with a simple:

ls /var/log/packages | grep -i package

For example:

$ ls /var/log/packages | grep -i gconf
GConf-2.32.1-x86_64-1
perl-extutils-pkgconfig-1.12-x86_64-1_SBo

As a way of practising programming, I decided to simulate the above command in Python 3. Here’s what I’ve coded:


#!/usr/bin/env python3

import glob, os, sys

if len(sys.argv) != 2:
        '''Check if the user provided the required argument'''
        print('The {0} command takes exactly 1 argument!'.format(sys.argv[0]))
else:
        packages_directory = '/var/log/packages/'
        package = sys.argv[1].lower()
        for files in glob.glob(packages_directory + '*' + package + '*'):
            print(os.path.basename(files))

It might be slightly slower than using Bash but it does the job. As I’m not a seasoned Python programmer, there’ll probably be ways of optimising the code, which I obviously welcome. Feel free to provide feedback.

2 comments on “Slackware – check installed packages with Python

  1. Hi, just wanted to note, that parentheses around the condition of if-statement aren’t necessary in Python and are even considered a bad style.

    Also, what you’re doing with

    os.listdir()

    and

    fnmatch.fnmatch()<code> could be done using the functions from <code>glob

    module (in fact, they’re implemented in a similar way). That won’t make your code run faster, but it’ll sure be smaller and simpler.

  2. admin on said:

    Thanks for your feedback, Audrius.

    I have adjusted the code. It is more concise now. As I said, I am not an experienced Python programmer so don’t hesitate to leave more comments.

    cheers
    Marcin

Leave a Reply

Your email address will not be published. Required fields are marked *

*

9,230 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>