这个问题是相当有意义的,如果有了比较好的方法,Python 完全可以用来开发商业软件,而不用担心源代码泄露。    前两天我在网上看了看,有很多的人在问这个问题。大部分的人都在用 py2exe,这是个对 Python 程序打包的东东,实际上只是在 Python 程序中找 出依赖的模块,然后发布这个程序。好处在于可以让这个程序脱离 Python 的环境来执行,不用安装 Python 解释器。但实际上并不能保护源代码,因为源 代码其实也包含在其中了。更好的办法是使用 Pyrex。在 http: //www.cosc.canterb ...
    Python 是支持多线程的,并且是 native 的线程。主要是通过 thread 和 threading 这两个模块来实现的。thread是比较底层的模块,threading 是对 thread 做了一些包装的,可以更加方便的被使用。这里需要提一下的是 Python 对线程的支持还不够完善,不能利用多 CPU,但是下个版本的 Python 中已经考虑改进这点,让我们拭目以待。    threading 模块里面主要是对一些线程的操作对象化了,创建了叫 Thread 的 class。一般来说,使用线程有两种模式,一种是创建线 ...
    在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在 Python 里更是如此,在官方发布的库中就包含有做这件事情的库,那就是 ConfigParser,这里简单的做一些介绍。    ConfigParser 解析的配置文件的格式比较象 ini 的配置文件格式,就是文件中由多个 section 构成,每个 section 下又有多个配置项,比如:  [db] db_host=127.0.0.1 db_port=3306 db_user=root db_pass=passwo ...
>>> import shutil >>> dir(shutil) ['Error', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '_samefi le', 'abspath', 'copy', 'copy2', 'copyfile', 'copyfileobj', 'copymode', 'copysta t', 'copytree', 'destinsrc', 'move', 'os', 'rmtree', 'stat', 'sys'] >>> ...
2008-08-15

Python 中使用 FTP

关键字: ftp
import ftplib ftp = ftplib.FTP() ftp.connect("ftp.freebsdchina.org",21) ftp.login("anonymous", "123") ftp.dir() ftp.quit()  下载用这个: ftp.retrbinary('RETR '+filename, open(filename,'wb').write)  上传用这个: ftp.storbinary("STOR "+filename, open(filename, 'rb'))      ...
import string, os, sys dir = '/var' print '----------- no sub dir' files = os.listdir(dir) for f in files: print dir + os.sep + f print '----------- all dir' for root, dirs, files in os.walk(dir): for name in files: print os.path.join(root, name)  前面的 os.listdi ...
Python 语言是支持用 C 来它写模块的,其实现有的很多模块也是用 C 写的。这里我做个简单的介绍。先决条件:1. 在 linux 上编写时,需要自己编译出 Python的动态连接库。也就是要有 libpython2.5.so 这样的东西。2. 在 windows 上时,则需要 mingw 这个编译环境。其实只要你安装了 Dev-Cpp 就有了。当然还安装了 windows 版的 Python.先把源代码帖上来,很简单,假设保存为 hello.c: #include <Python.h> static PyObject * hello_echo(PyObje ...
2008-08-15

Amusing Python 2: range/xrange

关键字: range xrange
这两个基本上都是在循环的时候用。 for i in range(0, 100): print i for i in xrange(0, 100): print i   这两个输出的结果都是一样的,实际上有很多不同,range会直接生成一个list对象: >>> a = range(0, 10) >>> type(a) <type 'list'> >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> a[0] ...
Python 有一个叫 doctest 的模块,很有意思,它可以让你在代码的注释中写入一些特殊的注释,这些注释是测试程序。Python 可以自动对它进行测试。 import doctest def myadd(a, b): ''' >>> myadd(1, 2) 3 >>> myadd(4, 5) 9 ''' return a+b if __name__ == '__main__': doctest.testmod()  输出: D:\>e2.p ...
Python2.5 中新增加了集合内容,让我想起了初中数学。看看: >>> b = set() >>> b.add(1) >>> b.add(2) >>> b.add(3) >>> b.add(4) >>> >>> c = set() >>> c.add(4) >>> c.add(5) >>> c.add(6) >>> d = b.difference(c) >&g ...