Is a blog about python programming language. You can see my work with python programming language, tutorials and news.
Monday, October 21, 2013
Python versus Matlab - good article by Luis Pedro Coelho
In this article Luis Pedro Coelho come with many arguments about Python versus Matlab.
Very good article ...
Thursday, October 17, 2013
How to make a color gradient and images with python script.
The Image and ImageDraw provide simple 2D graphics to create new images, annotate or retouch existing images, and to generate graphics.
Also this can help you to make on the fly images for you.
Let's see one example ...
First you need to import this modules and random python module
import Image,ImageDraw
from random import randint as rint
The next step : make one image , get some random numbers...
You need two colors : first is one random color and second is make from first color, see next source code:
img = Image.new("RGB", (500,500), "#FFFFFF")
draw = ImageDraw.Draw(img)
r,g,b = rint(0,255), rint(0,255), rint(0,255)
dr = (rint(0,255) - r)/500.
dg = (rint(0,255) - g)/500.
db = (rint(0,255) - b)/500.
Now you need to draw lines with this gradient of two colors.
for i in range(500):
r,g,b = r+dr, g+dg, b+db
draw.line((i,0,i,500), fill=(int(r),int(g),int(b)))
... and the python script source code:
import Image,ImageDraw
from random import randint as rint
def random_gradient(name):
img = Image.new("RGB", (500,500), "#FFFFFF")
draw = ImageDraw.Draw(img)
r,g,b = rint(0,255), rint(0,255), rint(0,255)
dr = (rint(0,255) - r)/500.
dg = (rint(0,255) - g)/500.
db = (rint(0,255) - b)/500.
for i in range(500):
r,g,b = r+dr, g+dg, b+db
draw.line((i,0,i,500), fill=(int(r),int(g),int(b)))
img.save(name+".png", "PNG")
if __name__ == "__main__":
for name in range(10):
random_gradient(str(name))
The result of this script will make images :
Sunday, September 22, 2013
Jython - funny and simple scripts - first steps .
I play today with jython and can be fun but seams to be to slow in a linux os.
Jython is invoked using the "jython" script and it's an implementation of Python for the JVM.
Install the package jython in your linux distro and you can start to deal with java and python.
When you use jython then script will start with :
#!/usr/bin/env jython
I make also some very simple scripts...
First script make one button and give a action to exit.
#!/usr/bin/env jython
from javax import *
import java
from java import *
import sys
frame = awt.Frame(size=(500,100))
frame.background = 255,255,0
def exit(event):
java.lang.System.exit(0)
my_button = awt.Button("Exit!", actionPerformed=exit)
frame.add(my_button,"Center")
frame.pack()
frame.setVisible(1)
The output is:
The script is easy to make ... it's like gtk with add, pack and action ...
Let's see the next script : one list.
from javax import *
from java import awt
import sys
python_list=[]
python_list.append('text 1')
python_list.append('text 2')
python_list.append('text 3')
python_list.append('text 4')
python_list.append('text 5')
frame=awt.Frame("test list")
panel=swing.JList(python_list)
frame.add(panel,"Center")
frame.pack()
frame.setVisible(1)
... and this is the gui with the list:
I make a simple list and add to the gui using pack() function.
The jython is not easy is much to learn and if you want then go to this website.
Check system , distro and commands using python scripts .
This is a simple example with two functions.
First will check the linux command : ls linux command.
The next function will give us some infos about system.
import shlex
import subprocess
from subprocess import Popen, PIPE
import platform
def check_command(command):
cmd='which ' + command
output = Popen(shlex.split(cmd), stdout=PIPE).communicate()[0]
command_path =output.split('\n')[0]
print command_path
return command_path
def check_platform():
arch, exe = platform.architecture()
my_system = platform.system()
if my_system == 'Linux':
distro_name, distro_version, distro_id = platform.linux_distribution()
elif my_system == 'Darwin':
distro_name, distro_version, distro_id = platform.mac_ver()
elif my_system == 'Windows':
distro_name, distro_version, distro_id = platform.win32_ver()
elif my_system == 'Java':
distro_name, distro_version, distro_id = platform.java_ver()
processor = platform.processor() or 'i386'
print processor, my_system, arch, distro_name, distro_version, distro_id
return processor, my_system, arch, distro_name, distro_version, distro_id
check_command('ls')
check_platform()
This python script can be use with any scripts when we need to test commands and system , distro version.
Thursday, September 12, 2013
Working with SunPy python module - part 001 .
The SunPy python module it's an open-source software library for solar physics using the Python programming language.
The SunPy module is included into nasa projects.
Now, if you want to use this python module then you need to install lapack and blas libraries for development.
I use # pip under super user account to install sunpy and the python modules required by SunPy.
# pip install --upgrade distribute
# pip install --upgrade pyfits
# pip install --upgrade suds
# pip install --upgrade pandas
# pip install --upgrade beautifulsoup4
... also you need to have this python modules: Scipy and Matplotlib.
After that you can install sunpy using:
# pip install sunpy
# pip install --upgrade sunpy
The basic example is one output created by Map() function.
This function can deal with many data sources, like:
SDO/AIA, SDO/HMI
STEREO/EUVI, STEREO/COR
Hinode/XRT
SOHO/EIT, SOHO/LASCO, SOHO/MDI
PROBA2/SWAP
Yohkoh/SXT
Let's try a simple example and will show the result...
>>> import sunpy
>>> ati_map=sunpy.Map(sunpy.AIA_171_IMAGE).peek()
... and output is:
Let's make more sun maps...
>>> eit_map=sunpy.Map(sunpy.EIT_195_IMAGE).peek()
The the output is:
>>> rhessi_map=sunpy.Map(sunpy.RHESSI_IMAGE).peek()
You can see radio spectrometer image using:
>>> callisto_radio_maps=sunpy.Map(sunpy.CALLISTO_IMAGE).peek()
Also you can combine the maps , like in the next example:
>>> eti_rhessi_maps=sunpy.Map(sunpy.EIT_195_IMAGE, sunpy.RHESSI_IMAGE, composite=True).peek()
You can get more infos about Map using :
>>> help(sunpy.Map)
If you want more data to show then you can request data from here.
Also you can give parameters to the Map, like:
date : datetime
| Image observation time
...
This allow you to take more data and info...
Using matplotlib and scipy modules can help to parse and show all infos.
How to fix error: fatal error: Python.h: No such file or directory
This is a common error when your system don't have the python-dev.
I got this error when I try to use : pip .
Just install the package python-dev and then all will working well.
Monday, September 9, 2013
News - Python 3.4.0 Alpha 2 was released .
From python official website I found this :
Python 3.4.0 alpha 2 was released on September 9th, 2013. This is a preview release of the next major release of Python, Python 3.4, and is not suitable for production environments.
Major new features of the 3.4 series, compared to 3.3
Python 3.4 includes a range of improvements of the 3.x series, including hundreds of small improvements and bug fixes. Major new features and changes in the 3.4 release series so far include:
PEP 435, a standardized "enum" module
PEP 442, improved semantics for object finalization
PEP 443, adding single-dispatch generic functions to the standard library
PEP 445, a new C API for implementing custom memory allocators
PEP 446, changing file descriptors to not be inherited by default in subprocesses...
Saturday, August 17, 2013
Working with PEP 8 conventions ...
What is the pep criteria? The PEP describing style guidelines for the C code in the C implementation of Python.
If you using Blender 3D/Python development then you need to follow the PEP 8.
The PEP 8 and can be found here and the authors are: Guido van Rossum , Barry Warsaw and Nick Coghlan.
Today I will show you a brief listing of pep8 criteria:
-indentation of 4 spaces not use tabs
-camel caps for class names: MyClass , AnotherClass
-all lower case underscore separated module names: my_module, another_module
-use explicit imports, not importing '*'
-imports should usually be on separate lines, not import os,sys
-adding whitespace around the operators , not 1+2 or 7+ 3
-don't use spaces around the = sign , not a = b +1
-use single quotes for enums, and double quotes for strings
-each line of a block comment starts with a # and a single space
-don't make comments that contradict the code
-if you want to writing good documentation strings then follow the PEP 257 conventions.
-run checks for pep8 compliance
#
-and enable line length checks use this instead#
-don't use multiple statements on the same line, like:if foo == 'test': do_test_thing()
one_test(); two_test()
... this is the correct way:if foo == 'test':
do_test_thing()
one_test()
two_test()
Also you can read about Blender 3D/Python and PEP 8 best practice here.
Saturday, August 10, 2013
Fix python error: SyntaxError: Non-ASCII character.
# coding: utf-8
You will see now something like this error:SyntaxError: invalid syntax
... but also will be point to the bad encoding character with : ^For example I had this:
usertest@home:~$ python sunet.py
File "sunet.py", line 22
def __init__ ( self , a , b , c ) :
^
SyntaxError: invalid syntax
How to deal with environment variables using python script.
Any OS like Linux, Unix, Windows has environment variables.
Also any variables which must not be committed on a public code can be used in this way.
You can give this variables to your application.
Let's see one simple example about how to do that:
import os
ENV_VAR = os.environ.get("ENV_VAR", None)
if not ENV_VAR:
print "not ENV_VAR"
if ENV_VAR:
print "yes ! is ENV_VAR"
Now you can give this ENV_VAR to the script or not. See next...
usertest@home:~$ ENV_VAR=true python demo-env.py
yes ! is ENV_VAR
usertest@home:~$ python demo-env.py
not ENV_VAR
With Python 3 on Unix, environment variables are decoded using the file system encoding.
Tuesday, July 30, 2013
The new pygobject come with version 3.9.5 .
GObject is a object system used by GTK+, GStreamer and other libraries.
The new PyGObject 3.9.5 provides a convenient wrapper for use in Python programs when
accessing GObject libraries.
The news come from Simon Feltman - pygtk digest: I am pleased to announce version 3.9.5 of the Python bindings for
GObject. This is the third release of the 3.9.x series which will
eventually result in the stable 3.10 release for GNOME 3.10.
The new release is available from ftp.gnome.org.
Wednesday, July 24, 2013
Using python module webkit and gtk to make one simple webbrowser.
Today I will show you a simple example with webkit python module.
I will make one simple browser using this two python modules.
Read the full tutorial here.
The result can be see in the next image:
Sunday, July 14, 2013
Selenium python module and links.
NOTE: If your script not run when you try to login then use python shell :P
Now add the next source code to see the links and some infos.
links = browser.find_elements_by_partial_link_text('')
for link in links:
print link.get_attribute("href")