下面列出常用的Python指令及其說明,對於初學Python的人而言應當相當有用:
sys模組:
argv: 命令列參數。exit([arg]): 結束程式。exitfunc: 若有指定此函式,程式結束前會先呼叫此函式。
getopt模組:
getopt(args, options[, long_options]): 解譯命令列參數選項的工具。
os模組:
chdir(path): 變更目前工作目錄。getcwd(): 取得目前工作目錄。getenv(varname[, defaultValue]): 取得環境變數。
putenv(varname, value): 設定或新增環境變數。
popen(command[, mode[, bufsize] ]): 執行某個命令,並將結果以pipe的方式傳會此程式。
tmpfile(): 傳回一個新的暫存檔案物件,此物件將以"w+b"的mode開啟。
listdir(path): 傳回指定路徑的內容。
remove(path): 刪除指定的檔案。
removedirs(path): 以遞迴的方式刪除指定的路徑。
rename(src, dst) [续上](path): 刪除指定的檔案。
removedirs(path): 以遞迴的方式刪除指定的路徑。
rename(src, dst): 變更路徑或檔案名稱。printf函数的用法python
renames(old, new): 遞迴的變更路徑或檔案名稱。
rmdir(path): 非遞迴的方式移除目錄。
stat(path): 傳回指定檔案或路徑的stat結構。
walk(top[, topdown=True [, onerror=None] ]): 產生整個目錄的樹狀結構。
abort(): 對目前的行程產生SIGABRT的訊號。
system(command): 在sub-shell中執行命令。
path.abspath(path): 傳回指定目錄的絕對路徑。
path.join(a, *p): 將兩個或多個路徑名稱結合成一個路徑。並在適當的地方加上目錄分隔字元。
ists(path): 檢查檔案或路徑是否存在。
path.basename(path): 傳回路徑的最後一個部分。
path.dirname(path): 傳回檔案名稱中屬於路徑的部分。
path.split(path): 將路徑分割成為各部分。
path.splitdrive(path) [续上](path): 傳回檔案名稱中屬於路徑的部分。
path.split(path): 將路徑分割成為各部分。
path.splitdrive(path): 分割出檔案名稱中,關於磁碟機的部分。
path.splitext(path): 分割出檔案名稱中,關於副檔名的部分。
path.splitunc(path): 分割出檔案名稱中屬於UNC的部分。
size(path): 取得指定檔案的大小。
path.isfile(path): 檢查指定的路徑是否指向一個檔案。
path.isdir(path): 檢查指定的路徑是否為一個目錄。
path.isabs(path): 檢查指定的路徑是否為一個絕對路徑。
shutil模組:
copy(src, dst): 拷貝src所指定的檔案到dst所指定的檔案中。
copytree(src, dst[, symlinks]): 遞迴的方式將整個src所指定的目錄樹拷貝到dst所指定的地方。
rmtree(path[, ignore_errors[, onerror] ]): 將整個目錄樹下的所有檔案目錄刪除。
move(src, dst): [续上]將整個檔案或目錄搬移到dst所指定的地方。
glob模組:
glob(pathname): 依照類似於shell在使用的檔案符合檢驗的格式來出某個目錄下的檔案。
re模組:
repile(pattern[, flags]): 將指定的pattern字串編譯並產生RegExp物件。
regexp.match(string[, pos[, endpos] ]): 若字串與pattern相符,傳回Match物件,否則傳回None。
regexp.search(string[, pos[, endpos] ]): 搜尋字串便出符合pattern的字串。
regexp.split(string[, maxsplit]): 以pattern作為分割字串,將指定的字串分割成為數個部分。
regexp.sub(repl, string[, count]): 將相符合的字串取得成為另一個字串。
up([group1, ...]): 傳回Match物件中的指定組字串。
ups(): 傳[续上]回所有的Match物件中的組。
updict(): 傳回所有的Match物件中有取名稱的
写 ..(print)
删除 ..(del)
定义/函数 (def)
忽略 (pass)
中断 (break)
下一个 (continue)
传回 (return)
示警 (raise)
载入 ... 名 ... (import ... as ...)
从 ... 载入 ...
共用 (global)
执行 (exec)
断言 (assert)
如 .. 不然 .. 否则 .. (if .. elif .. else ..)
只要 .. 否则 .. (while .. else ..)
取 .. 自 .. 然后 .. (for .. in .. else ..)
试 .. 失败 .. 否则 .. 然后 .. (try .. except .. else .. finally .. )
概念/类别 (class)
来自/不来自 (in / not in)
是/不是 (is / is not)
或 or
且 and
不是 not
作者:xichen 来源: www.chinaunix
核心提示:作者:梅劲松 本文档和所包含程序为MIT授权
我们来实现一个简单的加法的扩展模块!
建立一个目录,整个目录名中不要包含中文。在目录下建立add.c,内容如下:
#include <Python.h>;static PyObject* add(PyObject *self, PyObject *args);//一定声明为static,把他们限制在这个文件范围里。 几乎所有的参数都是PyObject类型。 在python,每个东西都是object。static PyObject* add(PyObject* self, PyObject* args){int x=0 ;int y=0;int z=0;if (! PyArg_ParseTuple(args, "i|i", &x, &y))return NULL;/*
第一个参数是self,这个是python用的, 每个函数都要有。我们暂时不管。args是一个参数列表。她把所有的参数都整合成一个stri[续上]ng。所以我们需要从这个string里来解析我们的参数。PyArg_ParseTuple来完成这个任务。第一个参数是args, 就是我们要转换的参数。第二个是格式符号。“s”代表是个string。 从args里提取一个参数就写"s", 两个的话就写"s|s", 如果是一个string,一个int,就写"s|i", 和printf差不多。第三个参数就是提取出来的参数放置的真正位置。必须传递这个参数的地址。对于add, 他将提取两个参数。分别是x和y。*/z=x+y;return Py_BuildValue("i", z);/*
调用完之后我们需要返回结果。这个结果是c的type或者是我们自己定义的类型。必须把他转换成PyObject, 让python认识。这个用Py_BuildValue来完成。他是PyArg_ParseTuple的逆过程。他的第一个参数和PyArg_ParseTuple的第二个参数一样, 是个格式化符号。第三个参数是我们需要转换的参数。Py_BuildValue会把所有的返回只组装成一个tutple给python。*/}static PyMethodDef add[续上]Methods[] ={{"add", add, METH_VARARGS, "E x ecute a shell co mmand."},{NULL, NULL, 0, NULL}};/*
这个是一个c的结构。他来完成一个映射。 我们需要把我们扩展的函数都映射到这个表里。
表的第一个字段是python真正认识的。是python里的方法名字。 第二个字段是python里的这个方法名字的具体实现的函数名。 在python里调用add, 真正执行的是用c写的add函数。第三个字段是METH_VARARGS, 他告诉python,add是调用c函数来实现的。第四个字段是这个函数的说明。如果你在python里来help这个函数,将显示这个说明。相当于在python里的函数的文档说明。*/PyMODINIT_FUNC initadd(){Py_InitModule("add", addMethods);}/*
注意,这个函数的名字不能改动。 必须是init+模块名字。 我们的模块名字是add。所以这个函数是initadd()。这样python在导入add 的模块时候,才会到这个函数,[续上]并调用。这个函数调用Py_InitModule来将模块名字和映射表结合在一起。他表示,add这个模块使用addMethods这个映射表。python应该这样导入我们的module的.*/然后建立setup.py这个文件,内容如下:
#! /usr/bin/ import setup, Extensionmodule1 = Extension(’add’, sources = [’add.c’])setup (name = ’PackageName’, version = ’1.0’, description = ’This is a demo package’, ext_modules = [module1])在msdos下进入这个目录,输入命令setup.py build。如果你能编译成功,到你所在目录的build\lib.win32-2.3下会发现add.pyd文件,将文
件复制到你所需要的地方,启动python,然后:c :\c>;pythonPython 2.3.3 (#51, Dec 18 2003, 20:22:39) [续上][MSC v.1200 32 bit (Intel)] on win32Type "help", "copyright", "credits"or "license"for more information.>>> import add>>> print d i r(add)[’__doc__’, ’__file__’, ’__name__’, ’add’]>>> add.add(1,2)3>>>