[python-uk] Welcome to the "python-uk" mailing list

Asad asad.hasan2004 at gmail.com
Sat Jul 28 06:47:55 EDT 2018


Hi All ,

         I got few steps ahead :  How to I iterate from keys of one
dictionary to another and just compare the version ?

import os
import re
from distutils.version import StrictVersion
import operator

lines=[]
new_dict={}
old_dict={}


fo = open("rpmlist1.txt", "r")
for line in fo:
    line=line.strip()
    lines.append(line)

#print lines

get_rpm_parts = re.compile(r"""
      ^ (.*)        # name
      - (.*)        # version
      - ([0-9]+)    # build
      [.] ([^.]+)   # os
      [.] ([^.]+) $ # architecture
""", re.X)

for s in lines:
    match = re.search(get_rpm_parts, s)
    if match :
 #       print "name: %s ver: %s arch: %s" % (match1.group ( 1 ),
match1.group ( 2 ), match1.group ( 5 ))
        new_dict[match.group(1)] = {"name": s, "version": match.group
( 2 ), "build": match.group ( 3 ),"os": match.group ( 4 ), "arch":
match.group ( 5 )}
        #else:
     #   print "no match1",s

print new_dict

list1 = [
        "binutils-2.23.52.0.1-12.el7.x86_64",
        "compat-libcap1-1.10-3.el7.x86_64",
        "compat-libstdc++-33-3.2.3-71.el7.i686",
        "compat-libstdc++-33-3.2.3-71.el7.x86_64",
        "gcc-4.8.2-3.el7.x86_64",
        "gcc-c++-4.8.2-3.el7.x86_64",
        "glibc-2.17-36.el7.i686",
        "glibc-2.17-36.el7.x86_64",
        "glibc-devel-2.17-36.el7.i686",
        "glibc-devel-2.17-36.el7.x86_64",
        "ksh",
        "libaio-0.3.109-9.el7.i686",
        "libaio-0.3.109-9.el7.x86_64",
        "libaio-devel-0.3.109-9.el7.i686",
        "libaio-devel-0.3.109-9.el7.x86_64",
        "libgcc-4.8.2-3.el7.i686",
        "libgcc-4.8.2-3.el7.x86_64",
        "libstdc++-4.8.2-3.el7.i686",
        "libstdc++-4.8.2-3.el7.x86_64",
        "libstdc++-devel-4.8.2-3.el7.i686",
        "libstdc++-devel-4.8.2-3.el7.x86_64",
        "libXi-1.7.2-1.el7.i686",
        "libXi-1.7.2-1.el7.x86_64",
        "libXtst-1.2.2-1.el7.i686",
        "libXtst-1.2.2-1.el7.x86_64",
        "make-3.82-19.el7.x86_64",
        "sysstat-10.1.5-1.el7.x86_64",
]

for i in list1:
    match1 = re.search(get_rpm_parts, i)
    if match1:
        #print "name: %s ver: %s arch: %s" % (match1.group ( 1 ),
match1.group ( 2 ), match1.group ( 5 ))
        old_dict[match1.group ( 1 )] = {"name": i, "version":
match1.group ( 2 ), "build": match1.group ( 3 ),"os": match1.group ( 4
), "arch": match1.group ( 5 )}
    # else:
    #   print "no match1",s

print old_dict

----Please let me know from here how to proceed further   ***************

On Sat, Jul 28, 2018 at 1:20 PM Nathan Jeffrey <nathan.jeffrey at gmail.com>
wrote:

> If I were going to do that, I would make those lists into sets, and then
> you could use set arithmetic to calculate the intersections.
>
> Have a look on Stack Overflow. This is fairly bread-and-butter stuff, and
> I am sure there is a better answer there than I could concoct here 😁
>
> Good luck!
>
> - N
>
> On Sat, 28 Jul 2018, 08:42 Asad, <asad.hasan2004 at gmail.com> wrote:
>
>> Hi All ,
>>
>>            I am new to python just completed 4 lecture on python, I am
>> looking for a pyhton script of module which check the versions of the rpm
>> in linux .
>>
>>           I have a situation in which I have two list list1 and list2 :
>>
>> list1 is prerequisites rpm for application
>>
>> and list2 is the list of rpm's in the system
>>
>> list1 = [
>>         "binutils-2.23.52.0.1-12.el7.x86_64",
>>         "compat-libcap1-1.10-3.el7.x86_64",
>>         "compat-libstdc++-33-3.2.3-71.el7.i686",
>>         "compat-libstdc++-33-3.2.3-71.el7.x86_64",
>>         "gcc-4.8.2-3.el7.x86_64",
>>         "gcc-c++-4.8.2-3.el7.x86_64",
>>         "glibc-2.17-36.el7.i686",
>>         "glibc-2.17-36.el7.x86_64",
>>         "glibc-devel-2.17-36.el7.i686",
>>         "glibc-devel-2.17-36.el7.x86_64",
>>         "ksh",
>>         "libaio-0.3.109-9.el7.i686",
>>         "libaio-0.3.109-9.el7.x86_64",
>>         "libaio-devel-0.3.109-9.el7.i686",
>>         "libaio-devel-0.3.109-9.el7.x86_64",
>>         "libgcc-4.8.2-3.el7.i686",
>>         "libgcc-4.8.2-3.el7.x86_64",
>>         "libstdc++-4.8.2-3.el7.i686",
>>         "libstdc++-4.8.2-3.el7.x86_64",
>>         "libstdc++-devel-4.8.2-3.el7.i686",
>>         "libstdc++-devel-4.8.2-3.el7.x86_64",
>>         "libXi-1.7.2-1.el7.i686",
>>         "libXi-1.7.2-1.el7.x86_64",
>>         "libXtst-1.2.2-1.el7.i686",
>>         "libXtst-1.2.2-1.el7.x86_64",
>>         "make-3.82-19.el7.x86_64",
>>         "sysstat-10.1.5-1.el7.x86_64",
>> ]
>>
>> lsit2 = ['acl-2.2.51-12.el7.x86_64', 'adcli-0.8.1-3.el7.x86_64',
>> 'audit-2.7.6-3.el7.x86_64', 'audit-libs-2.7.6-3.el7.i686',
>> 'audit-libs-2.7.6-3.el7.x86_64', 'audit-libs-python-2.7.6-3.el7.x86_64',
>> 'authconfig-6.2.8-30.el7.x86_64', 'autofs-5.0.7-70.0.1.el7_4.1.x86_64',
>> 'autogen-libopts-5.18-5.el7.x86_64', 'avahi-autoipd-0.6.31-17.el7.x86_64',
>> 'avahi-libs-0.6.31-17.el7.x86_64', 'bash-4.2.46-29.el7_4.x86_64',
>> 'bc-1.06.95-13.el7.x86_64', 'bind-libs-9.9.4-51.el7_4.2.x86_64',
>> 'bind-libs-lite-9.9.4-51.el7_4.2.x86_64',
>> 'bind-license-9.9.4-51.el7_4.2.noarch',
>> 'bind-utils-9.9.4-51.el7_4.2.x86_64',
>> 'binutils-2.25.1-32.base.el7_4.2.x86_64', 'biosdevname-0.7.2-2.el7.x86_64',
>> 'btrfs-progs-4.9.1-1.0.2.el7.x86_64', 'bzip2-1.0.6-13.el7.x86_64',
>> 'bzip2-libs-1.0.6-13.el7.i686', 'bzip2-libs-1.0.6-13.el7.x86_64',
>> 'ca-certificates-2017.2.14-71.el7.noarch', 'c-ares-1.10.0-3.el7.x86_64',
>> 'checkpolicy-2.5-4.el7.x86_64', 'chkconfig-1.7.4-1.el7.x86_64',
>> 'compat-libcap1-1.10-7.el7.x86_64',
>> 'compat-libstdc++-33-3.2.3-72.el7.i686',
>> 'compat-libstdc++-33-3.2.3-72.el7.x86_64',
>> 'coreutils-8.22-18.0.1.el7.x86_64', 'cpio-2.11-25.el7_4.x86_64',
>> 'cpp-4.8.5-16.0.3.el7_4.2.x86_64', 'cracklib-2.9.0-11.el7.i686',
>> 'cracklib-2.9.0-11.el7.x86_64', 'cracklib-dicts-2.9.0-11.el7.x86_64',
>> 'cronie-1.4.11-17.el7.x86_64', 'cronie-anacron-1.4.11-17.el7.x86_64']
>>
>> I would like to do a rpm version check between the two list  (list1 and
>> list2)
>>
>> so it only prints the rpm from list1 which are not installed and version
>> available in list2 is higher or lower .
>>
>>  Thanks in advance ,
>>
>>
>> On Sat, Jul 28, 2018 at 1:31 AM <python-uk-request at python.org> wrote:
>>
>>> Welcome to the python-uk at python.org mailing list! Welcome to the
>>> python-uk mailing list.
>>>
>>> This list is to help UK Python users to form a community, arrange
>>> events, advertise help or jobs wanted or sought and generally chat.
>>>
>>>
>>> To post to this list, send your message to:
>>>
>>>   python-uk at python.org
>>>
>>> General information about the mailing list is at:
>>>
>>>   https://mail.python.org/mailman/listinfo/python-uk
>>>
>>> If you ever want to unsubscribe or change your options (eg, switch to
>>> or from digest mode, change your password, etc.), visit your
>>> subscription page at:
>>>
>>>
>>> https://mail.python.org/mailman/options/python-uk/asad.hasan2004%40gmail.com
>>>
>>>
>>> You can also make such adjustments via email by sending a message to:
>>>
>>>   python-uk-request at python.org
>>>
>>> with the word `help' in the subject or body (don't include the
>>> quotes), and you will get back a message with instructions.
>>>
>>> You must know your password to change your options (including changing
>>> the password, itself) or to unsubscribe without confirmation.  It is:
>>>
>>>   Welc0me at 1
>>>
>>> Normally, Mailman will remind you of your python.org mailing list
>>> passwords once every month, although you can disable this if you
>>> prefer.  This reminder will also include instructions on how to
>>> unsubscribe or change your account options.  There is also a button on
>>> your options page that will email your current password to you.
>>>
>>
>>
>> --
>> Asad Hasan
>> +91 9582111698
>> _______________________________________________
>> python-uk mailing list
>> python-uk at python.org
>> https://mail.python.org/mailman/listinfo/python-uk
>>
> _______________________________________________
> python-uk mailing list
> python-uk at python.org
> https://mail.python.org/mailman/listinfo/python-uk
>


-- 
Asad Hasan
+91 9582111698
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-uk/attachments/20180728/5f44e036/attachment-0001.html>


More information about the python-uk mailing list