|
Using Cython to write C and C++ Extentions to Python |
|
|
Thursday, 23 February 2012 |
If you want to easyly write C and C++ extensions (to Python) that incorporate Python syntax, C and C++ functions you can use Cython.
To install Cython from FreeBSD ports:
cd /usr/ports/lang/cython make install clean
Then let's see a simple example that display numbers from 1 to n, where n is a given parameter to a function we will define.
First we define the pyx source file:
myfunc.pyx #!/usr/local/bin/python
def display_numbers (upper ):
for i in range(1,upper +1):
print i Then we define setup.py file that will build the C source code for our extension:
setup.py from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension ("myfunc", ["myfunc.pyx"])]
setup (
name = 'myfunc',
cmdclass = {'build_ext': build_ext },
ext_modules = ext_modules
)And then will build the binary extension to Python (run next command from shell command line): python setup.py build_ext --inplace
Then we could run Python and from command prompt:
>>> from myfunc import display_numbers >>> display_numbers(7) 1 2 3 4 5 6 7
Or we could write a small Python script that uses myfunc module/extenstion (run next example from command line):
view.py #!/usr/local/bin/python
import myfunc
myfunc.display_numbers (5) Note: Cython is also usefull if you want to build an application but you do not want to share all source code. By using only Python code, the app can be reverse engineered but using Cython this will not be possible, at least to get the same source code.
|
|
Last Updated ( Thursday, 23 February 2012 )
|
|
Creating Window Based GUI Apps with wxPython |
|
|
Thursday, 23 February 2012 |
If you want to create window based GUI app with Python there's a library for that called wxPython, based on (wrapper to) xwWidgets C++ library.
First we will install xwPython from FreeBSD Ports:
cd /usr/ports/x11-toolkits/py-wxPython28 make install clean
Then to create an simple window app we could use the following code:
example1.py #!/usr/local/bin/python
import wx
window = wx.App ()
window_frame = wx.Frame (None, -1, 'Window Title')
window_frame.Center ()
window_frame.Show ()
window.MainLoop () To move the window to a specific location (instead of centering it) we could use (before showing the window):
window_frame.MoveXY(500,100,1)
|
|
Last Updated ( Thursday, 23 February 2012 )
|
|
Run a UNIX Shell Command from Python and Display it's Output |
|
|
Thursday, 23 February 2012 |
To run a system UNIX shell command from a Python script and then to display it's output (it's result) we will use the following example which will run ls -la / and then display it's output:
display_dirs.py #!/usr/local/bin/python
import os
line_content = " "
line = os. popen("ls -la /")
while (line_content != ""):
line_content = line.readline ()
print line_content, Note that the comma ( , ) after line_content will make print command to display the value on the screen without a newline.
|
|
Last Updated ( Thursday, 23 February 2012 )
|
|
Generate 1000 values from Python and add them to SQLITE database |
|
|
Thursday, 23 February 2012 |
Let's say we want to generate 1000 values of a string and an int and add them to a Python database.
To accomplish that we will use os, binascii and random module.
See next example, it's self explanatory:
random_values.py #!/usr/local/bin/python
str_length = 5
import os, binascii, random
os. popen("sqlite3 example.db \"create table person(name TEXT, age integer);\"")
for i in range(1, 1001):
rand_name = binascii.hexlify (os.urandom (str_length ))
print rand_name
rand_age = random.randint (15, 40)
print rand_age
str = "sqlite3 example.db \"insert into person(name, age) values(\'%s\',\'%d\');\"" % (rand_name , rand_age )
print str
os. popen(str ) Of course this can be done also by using sqlite3 python module. But I am just lazy.
|
|
Create a range of directories in Python |
|
|
Saturday, 18 February 2012 |
If you want to create directories from 01 to 12 using python here is a variant to do that:
create_dirs.py #!/usr/local/bin/python
import os
for i in range(1, 13):
if len (str (i )) == 1:
print 'i = 0%s' % (i )
os. mkdir('0%s' % (i ))
else:
print 'i = %s' % (i )
os. mkdir('%s' % (i )) |
|
Last Updated ( Saturday, 18 February 2012 )
|
|
Python Power of Math Function |
|
|
Wednesday, 08 February 2012 |
If we want to calculate power of a number in Python we can use math.pow function:
>>> import math >>> >>> math.pow(2,8) 256.0
Previous example calculate 2 to the power of 8.
|
|
Define Lists and Tuples in Python |
|
|
Wednesday, 08 February 2012 |
Lists -------
To define a list of elements in Python we use:
>>> list = ['element1', 'element2', ;element3']
Then we can print the list:
>>> print list ['element1', 'element2', 'element3']
or, we can print an element of the list:
>>> print list[1]; element2
To print a range of elements we use:
>>> print list[0:2]; ['element1', 'element2']
Tuples ---------- To define a tuple:
>>> tuple = ('elem1', 100, 'elem2', 200, 'elem3', 300)
To print the tuple: >>> print tuple ('elem1', 100, 'elem2', 200, 'elem3', 300)
>>> print tuple[0] elem1
Dictionaries ------------------- To define a dictionary (key, value pair):
>>> dict = {'cat': 'gato', 'mouse':'raton', 'dog':'perro', 'chicken':'pollo'}
To print a value:
>>> print dict['cat'] gato
|
|
Last Updated ( Wednesday, 08 February 2012 )
|
|
Calculate Logarithm with Python math module |
|
|
Wednesday, 08 February 2012 |
To calculate logarithm using Python we will use math module:
python Python 2.7.2 (default, Feb 7 2012, 13:30:22) [GCC 4.2.1 Compatible FreeBSD Clang 3.0 (branches/release_30 142614)] on freebsd9 Type "help", "copyright", "credits" or "license" for more information. >>> >>> >>> import math >>> print math <module 'math' from '/usr/local/lib/python2.7/lib-dynload/math.so'> >>> >>> >>> print math.log <built-in function log> >>> >>> math.log(10,5) 1.4306765580733933
In previous example first parameter (10) to math.log is the value to calculate, and second parameter is the base (which is 5 in our example).
|
|
Last Updated ( Wednesday, 08 February 2012 )
|
|
First post for Python Tips |
|
|
Tuesday, 07 February 2012 |
You will find Python a nice scripting languages, very usefull and easy to learn. And very powerfull. You'll see its syntax is simple and clean. You can use it from small script to complex apps. Exporting data from apps like Blender can be done easely with Python. Web apps can be quickly created. Even sysadmin task can be simplified with Python. Or working with graphic files.
Welcome to Python world!
|
|
Last Updated ( Tuesday, 07 February 2012 )
|
|