Tuesday, February 10, 2015

Program Controls and loops in Python

Python Programming controls

The flow of program will be controlled with conditional statements where this flow 
  1. if condition
  2. if-else condition
  3. if-elif condition
  4. while loop
  5. while - else loop
  6. for loop
  7. for with if- else loop

if condition

Here I would like to work on program control statements, wherein relate some operating system functionalities so that, this would give some basic prototype for the sys admin scripts.
#!/usr/bin/python

# This illustrate if condition
# Filename      :       ifex.py

import os
d=os.listdir('/home/pavanbsd/pybin')
print d
f='ifex.py'
if f in d:
        print "File exists"
else:
        print "Not found..."

if-elif-else ladder

No worries, coming soon...
When you need the task that need to be done repeatedly then your choice is using loops. Python provides two simple loop constructs easy to use! More powerful then other scripting compare to, it has 'else' block.

while loop

Understand the power of while loop, which would check the condition for every iteration completion.
#!/usr/bin/python

# This is to illustrate while loop
# print 0-10 numbers

i=0
sum=0
while i<=10:
        print i
        sum=sum+i
        i+=1
print "after a while, sum of 0-10:", sum
Execution of the above script
:~/pybin$ ./while1.py
0
1
2
3
4
5
6
7
8
9
10
after a while, sum of 0-10:55
combine the above all logical constructs we can make a menu driven script
#!/usr/bin/python
import os, sys

print "System monitoring"
while True:
        print "c-CPU utilization\nm-Mem utilization\nd-Disk space\n"
        ch=raw_input('Enter your choice(q-quit):')
        if ch=='c':
                        print "cpu load"
                        os.system("uptime")
        elif ch=='m':
                        print "free -m"
                        os.system("free -m")
        elif ch=='d':
                        print "df -h"
                        os.system("df -hT")
        elif ch=='q':
                print "Exiting loop"
                break
        else:
                        print "invalid choice"


execution of the above example
:~/pybin$ ./menu.py
System monitoring
c-CPU utilization
m-Mem utilization
d-Disk space

Enter your choice(q-quit):c
cpu load
 08:16:49 up  1:14,  2 users,  load average: 0.17, 0.12, 0.14
c-CPU utilization
m-Mem utilization
d-Disk space

Enter your choice(q-quit):m
free -m
             total       used       free     shared    buffers     cached
Mem:          3500        288       3212          0         42        129
-/+ buffers/cache:        116       3383
Swap:         1021          0       1021
c-CPU utilization
m-Mem utilization
d-Disk space

Enter your choice(q-quit):d
df -h
df: `/var/lib/lightdm/.gvfs': Permission denied
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      ext4      6.8G  4.7G  1.9G  72% /
udev           devtmpfs  1.8G  4.0K  1.8G   1% /dev
tmpfs          tmpfs     701M  780K  700M   1% /run
none           tmpfs     5.0M     0  5.0M   0% /run/lock
none           tmpfs     1.8G  144K  1.8G   1% /run/shm
/dev/sdb5      ext4       21G   44M   20G   1% /tmp
/dev/sdc1      ext4      9.8G   23M  9.2G   1% /app
c-CPU utilization
m-Mem utilization
d-Disk space

Enter your choice(q-quit):q
Exiting loop

Saturday, February 7, 2015

Python Sets and Dictionaries

Python Sets

Python Maps examples

A mapping object maps hashable values to arbitrary objects. Mappings are mutable objects. There is currently only one standard mapping type, the dictionary. Dictionaries consist of pairs (called items) of keys and their corresponding values. Dictionaries can be created by placing a comma-separated list of key: value pairs within curly braces Keys are unique within a dictionary while values may not be. The values of a dictionary can be of any type, but the keys must be of an immutable data type such as strings, numbers, or tuples.

Python Set Operations and methods
Python Set methods continueed
>>> SET={'new','old','list','new'}
>>> SET
set(['new', 'old', 'list'])

Lets play with set operations, it is more like school math here...
>>> s={1,2,3,4}
>>> k={3,4,5,6}
>>> len(s)
4
>>> len(k)
4
>>> 1 in s
True
>>> 1 in k
False
>>> 1 not in k
True
>>> s.issubset(k)
False
>>> t={1,2}
>>> t.issubset(s)
True
>>> u=s.union(k)
>>> u
set([1, 2, 3, 4, 5, 6])
>>> i=s.intersection(k)
>>> i
set([3, 4])
>>> t <= s
True
>>> s >= t
True
>>> s|k
set([1, 2, 3, 4, 5, 6])
>>> s&k
set([3, 4])
>>> s-t
set([3, 4])
>>> s^k
set([1, 2, 5, 6])
>>> c=s.copy()
>>> c
set([1, 2, 3, 4])
>>> x=10
>>> x+=1
>>> x
11
>>> s|=k
>>> s
set([1, 2, 3, 4, 5, 6])
>>> s&=k
>>> s
set([3, 4, 5, 6])
>>> s-=t
>>> s
set([3, 4, 5, 6])
>>> s.add(1)
>>> s
set([1, 3, 4, 5, 6])
>>> s.add(2)
>>> s
set([1, 2, 3, 4, 5, 6])
>>> s.pop()
1
>>> s.remove(5)
>>> s
set([2, 3, 4, 6])
>>> s.clear()
>>> s
set([])

The dict : a map/hash data type

Dictionaries are able store set of keys and set of value objects mapping like hashmap

Key- can be any immutable type
Value – can be any standard type or object type

You can define, lookup, view, delete, modify with key-value pairs can be assigned empty object with curly braces {} can be assigned with an elements

Dict methods and fucntions

  • len( dict )
  • dict.copy( )
  • dict.items( )
  • dict.keys( )
  • dict.values( )
  • dict.has_key(‘key’)
  • viewitems( )
  • viewkeys( )
  • viewvalues( )


The builtin dictionary object from the os module, that helps sys-admins this would be the best example.

 os.environ
{'APACHE_HOME': '/bin/httpd.conf', 'SSH_CLIENT': '192.168.1.100 62905 22', 'LOGNAME': 'pavanbsd', 'USER': 'pavanbsd', 'HOME': '/home/pavanbsd', 'PATH': '/usr/lib/jvm/java-7-oracle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/lib/jvm/java-7-oracle/bin:/usr/lib/jvm/java-7-oracle/db/bin:/usr/lib/jvm/java-7-oracle/jre/bin', 'LANG': 'en_IN', 'TERM': 'xterm', 'SHELL': '/bin/bash', 'XDG_SESSION_COOKIE': '9d869a27940b4997c1ddd3b60000071c-1423259642.573754-89677289', 'LANGUAGE': 'en_IN:en', 'SHLVL': '1', 'JAVA_HOME': '/usr/lib/jvm/java-7-oracle', 'CONFIG_JVM_ARGS': '-Djava.security.egd=file:/dev/./urandom', 'CLASSPATH': '/home/pavanbsd/Oracle/Middleware/Oracle_Home/wlserver/server/lib/weblogic.jar:/home/pavanbsd/Oracle/Middleware/Oracle_Home/wlserver/common/derby/lib/derbytools.jar:/home/pavanbsd/Oracle/Middleware/Oracle_Home/wlserver/common/derby/lib/derbynet.jar:.', 'J2SDKDIR': '/usr/lib/jvm/java-7-oracle', 'WL_HOME': '/home/pavanbsd/Oracle/Middleware/Oracle_Home/wlserver', '_': '/usr/bin/python', 'DERBY_HOME': '/home/pavanbsd/Oracle/Middleware/Oracle_Home/wlserver/common/derby', 'J2REDIR': '/usr/lib/jvm/java-7-oracle/jre', 'SSH_TTY': '/dev/pts/0', 'OLDPWD': '/home/pavanbsd', 'PWD': '/home/pavanbsd/pybin', 'MAIL': '/var/mail/pavanbsd', 'SSH_CONNECTION': '192.168.1.100 62905 192.168.1.105 22'}
>>> d['JAVA_HOME']
'/usr/lib/jvm/java-7-oracle'
>>> d['SHELL']
'/bin/bash'
Lets try something different on dict objects...
Lets create a dictionary and do experiment on all its methods and operations.
>>> d={1:'Pavan',2:'Sudheer',3:'Chakri'}
>>> d
{1: 'Pavan', 2: 'Sudheer', 3: 'Chakri'}
>>> d[1]
'Pavan'
>>> d={1:'Pavan',2:'Sudheer',3:'Chakri'}
>>> d[1]='Vybhava'
>>> d
{1: 'Vybhava', 2: 'Sudheer', 3: 'Chakri'}
>>> len(d)
3
>>> c=d.copy()
>>> c
{1: 'Vybhava', 2: 'Sudheer', 3: 'Chakri'}
>>> c[1]='Pavan'
>>> c
{1: 'Pavan', 2: 'Sudheer', 3: 'Chakri'}
>>> c.keys()
[1, 2, 3]
>>> c.values()
['Pavan', 'Sudheer', 'Chakri']
>>> c.items()
[(1, 'Pavan'), (2, 'Sudheer'), (3, 'Chakri')]
>>> c.items()[1]
(2, 'Sudheer')
>>> c.items()[2]
(3, 'Chakri')
>>> d.has_key(3)
True
>>> d.has_key(4)
False
>>> d.has_key(5)
False
>>> d.viewitems()
dict_items([(1, 'Vybhava'), (2, 'Sudheer'), (3, 'Chakri')])
>>> d.viewkeys()
dict_keys([1, 2, 3])
>>> d.viewvalues()
dict_values(['Vybhava', 'Sudheer', 'Chakri'])
>>> d.get(1)
'Vybhava'

Sample script that illustrates the Python dictionary object types.

dict = {'Language': 'Python', 'Founder': 'Guido Van Rossum'}
print dict
print "Length of dictionary : %d" %  len(dict)
copydict = dict.copy()
print "New Dictionary : %s" %  str(copydict)
print "Items in dictionary: %s" % dict.items()
print "Keys in dictionary: %s" % dict.keys()
print "Vales in Dictionary: %s" % dict.values()
print "Key in dictionary or not: %s" % dict.has_key('Language')
print "Key in dictionary or not: %s" % dict.has_key('Year')
Hope you enjoyed the post, write your valued feedback in the comments.

DevOps Foundation course

DevOps Foundation course
Join us to learn DevOps from the Beginning