Category Archives: Python


S_ISDIR checks the file mode m to see whether the file is a directory. If so it returns True

#ifndef S_ISDIR
#define S_ISDIR(x) (((x) & S_IFMT) == S_IFDIR)

#ifndef S_ISREG
#define S_ISREG(x) (((x) & S_IFMT) == S_IFREG)

#ifndef S_ISDIR
#define S_ISDIR(mode)  (((mode) & S_IFMT) == S_IFDIR)

#ifndef S_ISREG
#define S_ISREG(mode)  (((mode) & S_IFMT) == S_IFREG)

Install MySQLdb for Python

Download and install MySQL package installer
Download MySQLdb mysql-python (1.2.3)
Install MySQLdb
ARCHFLAGS=’-arch x86_64′ python build
ARCHFLAGS=’-arch x86_64′ python install
If you get the error “mysql_config not found” follow the instructions here,
which are essentially this: Open up site.cfg from the binding distribution and
make sure it has this (the path to mysql_config should match the actual one
on your system):
mysql_config = /usr/local/mysql/bin/mysql_config

$ python -c “import MySQLdb”
Traceback (most recent call last):
File “<string>”, line 1, in <module>
File “build/bdist.macosx-10.6-universal/egg/MySQLdb/”, line 19, in <module>
ImportError: dlopen(./, 2): Library not loaded: libmysqlclient.16.dylib
Referenced from: /Users/phaisarn/.python-eggs/MySQL_python-1.2.3-py2.6-macosx-10.6-universal.egg-tmp/
Reason: image not found
สาเหตุคือ อ้างอิงไปที่ไฟล์ libmysqlclient.16.dylib แต่ไม่สามารถหาไฟล์นี้พบ
เนื่องจาก libmysqlclient.16.dylib เป็น MySQL client ดังนั้น จึงต้องตรวจสอบไปที่ MySQL
แก้ไข หาไฟล์ ibmysqlclient.16.dylib ว่าอยู่ที่ไหน ปรากฏว่าอยู่ที่/opt/local/lib/mysql5/mysql
ทำการตรวจสอบ DYLD_LIBRARY_PATH ด้วยคำสั่ง echo $DYLD_LIBRARY_PATH
ทำการ export DYLD_LIBRARY_PATH=/opt/local/lib/mysql5/mysql
เรียกคำสั่ง $ python -c “import MySQLdb” ก็จะไม่มี error เป็นอันเรียบร้อย

แต่ถ้าหาไฟล์ libmysqlclient.16.dylib ไม่เจอ ให้ใช้ MacPorts
ทำการติดตั้ง MacPorts จากนั้นเรียกคำสั่ง
/opt/local/bin/port install py26-mysql
ก็จะได้ไฟล์ libmysqlclient.16.dylib มา

การให้ Python เรียก MySQLdb
import MySQLdb
conn = MySQLdb.connect(host=’localhost’,user=’xxx’,passwd=’xxx’,db=’mysql’, unix_socket=’/tmp/mysql.sock’)

ที่มา: (1.2.2)

Python & command line

ตัวอย่างคำสั่งการ Import แบบ command line โดยที่ยังไม่ต้องเข้าไปที่ shell ของ python

python -c "import MySQLdb"

QR Code: in Python


Install libqrencode
Libqrencode is a C library for encoding data in a QR Code symbol, a kind of 2D symbology that can be scanned by handy terminals such as a mobile phone with CCD. The capacity of QR Code is up to 7000 digits or 4000 characters, and is highly robust.

Compile & install
make install

qrencode -h

Install pyqrencode
Python bindings for libqrencode


python install


$ python
Traceback (most recent call last):
File “”, line 1, in <module>
from qrencode import Encoder
ImportError: cannot open shared object file: No such file or directory
$ export LD_LIBRARY_PATH=/usr/local/lib

QR Code: in Python

Project site at:
Download source code:
Install from sourcecode on Ubuntu 10.04

$ sudo apt-get install jcc sun-openjdk-6-jdk python-imaging python-setuptools python-dev
For Python 2.6
replace “-m jcc” with “-m jcc.__main__” in Makefile
sudo make install

code example

#!/usr/bin/env python
# coding: utf-8
# pyqrcode sample encoder
import sys, qrcode
e = qrcode.Encoder()
image = e.encode('woah!', version=15, mode=e.mode.BINARY, eclevel=e.eclevel.H)'out.png')

There is a error like this.
Traceback (most recent call last):
File “”, line 6, in <module>
import sys, qrcode
File “/usr/local/lib/python2.6/dist-packages/qrcode-0.2.1-py2.6-linux-i686.egg/qrcode/”, line 21, in <module>
_qrcode._setExceptionTypes(JavaError, InvalidArgsError)
AttributeError: ‘module’ object has no attribute ‘_setExceptionTypes’

การจับเวลาด้วย Python

ตัวอย่างการใช้ฟังก์ชั่น clock() and time() บน Windows and Linux
Run on linux
>>> from time import clock, time
>>> print clock(), time()
0.01 1169573460.96
>>> print clock(), time()
0.01 1169573463.76
>>> print clock(), time()
0.01 1169573467.09
Run on Windows
>>> from time import clock, time
>>> print clock(), time()
7.54285810068e-006 1169574534.84
>>> print clock(), time()
3.32073322168 1169574538.16
>>> print clock(), time()
7.32428004118 1169574542.15
>>> #!/usr/bin/python

จะเห็นได้ว่าฟังก์ชั่น time() เหมาะกับการนำมาใช้จับเวลามากกว่า (แต่ก็ไม่ตรงซะทีเดียว สู้คำสั่ง command line:time  ไม่ได้)
import time

def procedure():

# measure process time
t0 = time.clock()
print time.clock() - t0, "seconds process time"

# measure wall time
t0 = time.time()
print time.time() - t0, "seconds wall time"

0.0 seconds process time
2.50023603439 seconds wall time