Python论坛  - 讨论区

标题:[python-chinese] 老菜鸟 邹胖小 学习PYTHON 入门日志 (三)

2005年06月02日 星期四 16:48

Chao Zou chao.zou at gmail.com
Thu Jun 2 16:48:42 HKT 2005

vMzQ+KO619a3+7SuCjEzo7rX1rf7tK61xLm5s8kKICAgICAgICAiYWJkIiAgus0nYWRmJyC2vMrH
19a3+7Suo6zXqtLi19a3+7rNY7XEutzP4MvGo6y1q7bgwcu8uLj2CiAgICAgICAg1qez1nVuaWNv
ZGUgtcTI56O6XHV7eHh4eH0gIAogICAgICAgID4+PiB1J0hlbGxvXHUwMDQzXHUwMDIzV29ybGQh
JwogICAgICAgIHUnSGVsbG9DI1dvcmxkIScgICAKICAgICAgICAKICAgICAgICAiYWJjIiBcCiAg
ICAgICAgJ2RlZicKICAgICAgICCx7cq+tcTKx9fWt/u0riJhYmNkZWYiIAogICAgICAgICJhYmMi
KyJkZWYiILHtyr61xMrHwb249tfWt/u0rtPDIL/VsNfX1rf7way906Oho6jXysHP1tDLtbXEo6kK
ICAgICAgICDO0rK7yse63MP3sNejrNLyzqrK5LP2tcS94bn7trzKx9K70fm1xKGjIr/VsNfX1rf7
Ita4tcTKx8qyw7TE2KO/CiAgICAgICAgCiAgICAgICAg0qrKx7rcs6O1xNfWt/u0rr7N08MiIiIg
wazXxbXEyP249iIKICAgICAgICAiIiIKICAgICAgICB0aGlzIGlzIGEgdmVyeSB2ZXJ5IGxvbmcg
c3RyaW5nLgogICAgICAgIEFuZCBpdCBjb250YWlucyBhIGxvdCBsaW5lLgogICAgICAgIGl0IGlz
IHN1aXRhYmxlIHRvIHdyaXRlIGRvY3VtZW50IG9mIGZ1bmN0aW9uLgogICAgICAgICIiIgogICAg
ICAgILrc09DTw7/J0tTQtMSjv+nA78PmtcTOxLW1CgoxNKO619a3+7SutcSy2df3ICAKICAgICAg
ICAgIHBzo7rO0rLCsuLT0LrctuCy2df3ysfE3LTTv+K78sSjv+nW0NXStb2jrMvkyLvB0MHLuty2
4KOstuDBt8+wssXT0NLi0uUKICAgICAgICAgIAogICAgICAgIChhKSAgIGludChzdHIsYmFzZSnT
w8C016q7u9fWt/u0riC002Jhc2W9+NbGtb0gMTC9+NbGtcSjrAogICAgICAgIMjnaW50KCIxMTEi
LDIpICy3tbvYtcTKxzejrGludCgiMTExIiw0KSy3tbvYtcTKxzIxCiAgICAgICDNrMDtbG9uZyhz
dHIsYmFzZSkKICAgICAgIAogICAgICAgKGIpICDX1rf7tK61xMGsvdMKICAgICAgICA+Pj4gIkhl
bGxvIiArICIgIiArICJXb3JsZCIKICAgICAgICdIZWxsbyBXb3JsZCcKICAgICAgIAogICAgICAg
KGMpICDK19fWxLi089C0CiAgICAgICA+Pj4gInRoaXMgaXMgdGVzdCIuY2FwaXRhbGl6ZSgpCiAg
ICAgICAnVGhpcyBpcyB0ZXN0JwogICAgICAgCiAgICAgICAoZCkgIMirsr+x5LTz0LQKICAgICAg
ID4+PiAidGhpcyBpcyB0ZXN0Ii51cHBlcigpCiAgICAgICAnVEhJUyBJUyBURVNUJwogICAgICAg
CiAgICAgICAoZSkgIMirsr+x5NCh0LQKICAgICAgID4+PiAiVEhJUyBJUyB0ZXN0Ii5sb3dlcigp
IAogICAgICAgJ3RoaXMgaXMgdGVzdCcKICAgICAgIAogICAgICAgKGYpICC089Ch0LS9u7u7CiAg
ICAgICA+Pj4gIlRoaXMgSXMgVGVzdCIuc3dhcGNhc2UoKQogICAgICAndEhJUyBpUyB0RVNUJwog
ICAgICAKICAgICAgIChnKSAgu/G1w7OktsgKICAgICAgID4+PiBsZW4oIkhlbGxvIFdvcmxkIikK
ICAgICAgIDExCiAgICAgICAKICAgICAgIChoKSAgu/G1w9fTtK4KICAgICAgILrNbGlzdLvxtcPX
02xpc3TSu9H5CiAgICAgICAKICAgICAgIChpKSAgxdC2z9fWt/u0rrXEwODQzQogICAgICAgcy5p
c2FsbnVtKCkgICAgICAgIMrHt/G2vMrHyv3X1rrNyv3X1gogICAgICAgcy5pc2FscGhhKCkgICAg
ICAgICDKx7fxtrzKx9fWxLgKICAgICAgIHMuaXNkaWdpdCgpICAgICAgICAgIMrHt/G2vMrHyv3X
1gogICAgICAgcy5pc2xvd2VyKCkgpF8gICAgyse38ba8ysfQodC019bEuAogICAgICAgcy5pc3Vw
cGVyKCkgpF8gICDKx7fxtrzKx7Tz0LTX1sS4CiAgICAgICBzLmlzdGl0bGUoKSCkXyAgICAgIMrH
t/HDv7j2taW0yrXEytfX1sS4try089C0wcsKICAgICAgIHMuaXNzcGFjZSgpIKRfICAgyse38dPJ
ICBcbiAsICBcdCAsICBcciAsICAgJyAnICAg1+mzybXECiAgICAgICAKICAgICAgIChqKSCy6dXS
19PX1rf7tK4KICAgICAgIHMuZmluZChzdWJzdHJpbmcsW3N0YXJ0IFssZW5kXV0pICAg1f3P8iDU
2nNbc3RhcnQgWyxlbmRdXbe2zqfE2rLp1dKjqL/J0aGjqQogICAgICAgcy5yZmluZChzdWJzdHJp
bmcsW3N0YXJ0IFssZW5kXV0pICC3tM/yINTac1tzdGFydCBbLGVuZF1dt7bOp8TasunV0qOov8nR
oaOpCiAgICAgICDV0rK7tb23tbvYIKOtMaO7CiAgICAgICBzLmluZGV4KHN1YnN0cmluZyxbc3Rh
cnQgWyxlbmRdXSnT63MuZmluZChzdWJzdHJpbmcsW3N0YXJ0IFssZW5kXV0pwODLxgogICAgICAg
INXSsru1vbe1u9hWYWx1ZUVycm9yICDS7LOjCiAgICAgICAgzazA7SBzLnJpbmRleAogICAgICAg
x7DD5svEuPa6r8r9try3tbvYtcTKx8671sMKICAgICAgIHMuY291bnQoc3Vic3RyaW5nLFtzdGFy
dCBbLGVuZF1dKSC3tbvYtcTV0rW9tcS0zsr9CiAgICAgICAKICAgICAgIChLKbrPsqK6zbfWveLX
1rf7tK4KICAgICAgIHMuam9pbih3b3Jkcykgus1zLnNwbGl0KHdvcmRzKSDXotLius3Su7DjtcTP
sLnfsrvSu9axo6zBvbj2yseyu82stcQKICAgICAgILLOyv252M+1o6y/tMD919O+zcP3sNfBywog
ICAgICAgPj4+ICJcbiIuam9pbihbIkhlbGxvIiwiV29ybGQiLCJQeXRob24iLCJTYWlkIl0pCiAg
ICAgICAnSGVsbG9cbldvcmxkXG5QeXRob25cblNhaWQnCiAgICAgICA+Pj4gcHJpbnQgIlxuIi5q
b2luKFsiSGVsbG8iLCJXb3JsZCIsIlB5dGhvbiIsIlNhaWQiXSkKICAgICAgIEhlbGxvCiAgICAg
ICBXb3JsZAogICAgICAgUHl0aG9uCiAgICAgICBTYWlkCiAgICAgICA+Pj4gIlRoaXMgaXMgYSBi
b29rIi5zcGxpdCgiICIpCiAgICAgICBbJ1RoaXMnLCAnaXMnLCAnYScsICdib29rJ10KICAgICAg
IAogICAgICAgCiAgICAgICAobCm48cq9u6/X1rf7tK4KICAgICAgILrNY7XEuPHKvbrcz/OjrMjn
CiAgICAgICA+Pj4gIiVkIGFuZCAlZCIgJSAoLTEsMikKICAgICAgIC0xIGFuZCAyCiAgICAgICDX
otLiyscguPHKvcrHICDX1rf7tK4go6UgdHVwbGWjrCB0dXBsZcrHss7K/bHto6wKICAgICAgIMzY
sfDSu7XjtcTKx6O6CiAgICAgICA+Pj4gIiVjIGFuZCAlYyIlKDY3LDY4KQogICAgICAgJ0MgYW5k
IEQnIAogICAgICAgPj4+ICIlciIlKHsib25lIjoxLCJ0d28iOjJ9KQogICAgICAgInsndHdvJzog
MiwgJ29uZSc6IDF9IgogICAgICAgss7K/XLKxyC3tbvYZXhwcigpILXE1rW08tOhs/bAtAogICAg
ICAgPj4+ICIlcyIlKHsib25lIjoxLCJ0d28iOjJ9KQogICAgICAgInsndHdvJzogMiwgJ29uZSc6
IDF9IgogICAgICAgss7K/XPKxyC3tbvYc3RyKCm1xNa1tPLTobP2wLQKICAgICAgILnY09pzdHIg
us1leHBytcSyu82s0tS689TZy7UKICAgICAgILj8zNix8LXECiAgICAgICA+Pj4gcHJpbnQgIiUo
bmFtZSlzJ3MgaGVpZ2h0IGlzICUoaGVpZ2h0KWQgY20iIFwKICAgICAgIC4uLiAiLCUobmFtZSlz
J3Mgd2VpZ2h0IGlzICUod2VpZ2h0KWQga2ciICUgXAogICAgICAgLi4uIHsibmFtZSI6IkNoYXJs
ZXMiLCJoZWlnaHQiOjE3MCwid2VpZ2h0Ijo3MH0KICAgICAgIAogICAgICAgQ2hhcmxlcydzIGhl
aWdodCBpcyAxNzAgY20sQ2hhcmxlcydzIHdlaWdodCBpcyA3MCBrZyAKICAgICAgIAogICAgICAl
ZNXi1ta48cq9v8nS1CDTw9XiuPbNqNPDtcS5q8q9o7oKICAgICAgJVs8bWFwcGluZyBrZXk+XVs8
Y29udmVyc2lvbiBmbGFnPl1bPE1pbmltdW0gZmllbGQKd2lkdGg+XVs8cHJlY2lzaW9uPl1bPGxl
bmdodCBtb2RpZmllcj5dPGNvbnZlcnNpb24gdHlwZT4KICAgICAgus1jINbQtcRwcmludGa1xLjx
yr263M/gvfwKICAgICAg0qrXotLitcTKxyCjpW1hcHBpbmcga2V5IL/J0tTNrNK7uPax5MG/ttTT
prbgtM6howogICAgICDSsr/J0tTTw8P8w/u/1bzkwLTX9iDI5wogICAgICA+Pj4gZGVmIGZ1bihh
LGIpOgogICAgICAuLi4gcHJpbnQgImEgaXMgJShhKWQsYiBpcyAlKGIpZCIgJWxvY2FscygpCiAg
ICAgIC4uLgogICAgICA+Pj4gZnVuKDEsMikKICAgICAgYSBpcyAxLGIgaXMgMgogICAgICBsb2Nh
bHMoKbe1u9i1xMrH0ru49mRpY3Rpb25hcnkgseTBv8P719bOqiBrZXkgseTBv7XE1rXOqiB2YWx1
ZQogICAgICDFxcHQuPHKvQogICAgICBzLmxqdXN0KHdpZHRoKSAgICAgINfzttTG5KOssrvX47K5
v9W48aOss6yz9r7NysfX1rf7tK6xvsnttcSzpLbICiAgICAgIHMucmp1c3Qod2lkdGgpICAgICAg
09K21MbkCiAgICAgIHMuY2VudGVyKHdpZHRoKSAgICC+09bQCiAgICAgIHMuc3RyaXAoKSAgICAg
ICAgICAgICAgIMils/3X1rf7tK7Nt86ytcS/1bDXICAgsPzAqFxuIFxyICBcdCAiICIgCiAgICAg
IHMubHN0cmlwKCkgICAgICAgICAgICAgIMil1/Ox37/VsNcKICAgICAgcy5yc3RyaXAoKSAgICAg
ICAgICAgICAgyKXT0rHfv9Ww1wogICAgICBweXRob24gMi4yLjMgINT2vNPBy7/J0aGyzsr9CiAg
ICAgIMjnIAogICAgICA+Pj4gYT0iYWJkZnNkZnNkZmdnYmJiYWEiCiAgICAgID4+PiBhLnN0cmlw
KCJhYiIpICAgICAgICAgICAgIyDNt86y09AgImEiu/IiYiK+zcm+tfQKICAgICAgJ2Rmc2Rmc2Rm
Z2cnCiAgICAgIAogCiAgCiAKINLUyc/Kx3B5dGhvbrXEc3RyaW5no6zPwtK7xqq9q8rHdHVwbGUg
c2VxdWVuY2UgZGljdGlvbmFyeSC1yCy9q83qs8lQeXRob24gtcTK/b7dwODQzQogCtfexdbQoSAy
MDA1xOo21MIyyNUg16O087zSv+zA1rCyv7UK

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月02日 星期四 17:54

Qiangning Hong hongqn at gmail.com
Thu Jun 2 17:54:44 HKT 2005

On 6/2/05, Chao Zou <chao.zou at gmail.com> wrote:

[snip]

>         "abc" \
>         'def'
>         表示的是字符串"abcdef"
>         "abc"+"def" 表示的是两个字符串用 空白字符连接!(资料中说的)
>         我不是很明白,因为输出的结果都是一样的。"空白字符"指的是什么呢?

"abc" "def" 完全等同于"abcdef",编译时直接生成一个字符串对象。
"abc"+"def"是一个字符串运算表达式,运行时将两个字符串对象做+运算,生成新的的字符串"abcdef"

[snip]

-- 
Qiangning Hong
Get Firefox! <http://www.spreadfirefox.com/?q=affiliates&id=67907&t=1>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 14:11

szhu szhu at jadechip.com
Fri Jun 3 14:11:28 HKT 2005

要是管理员能把这些邮件整理一下, 放个精华贴就好了

On Thu, 2 Jun 2005 16:48:42 +0800
Chao Zou <chao.zou at gmail.com> wrote:

> 继续:字符串
> 13:字符串的构成
>         "abd"  和'adf' 都是字符串,转意字符和c的很相似,但多了几个
>         支持unicode 的如:\u{xxxx}  
>         >>> u'Hello\u0043\u0023World!'
>         u'HelloC#World!'   
>         
>         "abc" \
>         'def'
>         表示的是字符串"abcdef" 
>         "abc"+"def" 表示的是两个字符串用 空白字符连接!(资料中说的)
>         我不是很明白,因为输出的结果都是一样的。"空白字符"指的是什么呢?
>         
>         要是很常的字符串就用""" 连着的三个"
>         """
>         this is a very very long string.
>         And it contains a lot line.
>         it is suitable to write document of function.
>         """
>         很有用可以写模块里面的文档
> 
> 14:字符串的操作  
>           ps:我猜测有很多操作是能从库或模块中找到,虽然列了很多,多练习才有意义
>           
>         (a)   int(str,base)用来转换字符串 从base进制到 10进制的,
>         如int("111",2) ,返回的是7,int("111",4),返回的是21
>        同理long(str,base)
>        
>        (b)  字符串的连接
>         >>> "Hello" + " " + "World"
>        'Hello World'
>        
>        (c)  首字母大写
>        >>> "this is test".capitalize()
>        'This is test'
>        
>        (d)  全部变大写
>        >>> "this is test".upper()
>        'THIS IS TEST'
>        
>        (e)  全部变小写
>        >>> "THIS IS test".lower() 
>        'this is test'
>        
>        (f)  大小写交换
>        >>> "This Is Test".swapcase()
>       'tHIS iS tEST'
>       
>        (g)  获得长度
>        >>> len("Hello World")
>        11
>        
>        (h)  获得子串
>        和list获得子list一样
>        
>        (i)  判断字符串的类型
>        s.isalnum()        是否都是数字和数字
>        s.isalpha()         是否都是字母
>        s.isdigit()          是否都是数字
>        s.islower() __    是否都是小写字母
>        s.isupper() __   是否都是大写字母
>        s.istitle() __      是否每个单词的首字母都大写了
>        s.isspace() __   是否由  \n ,  \t ,  \r ,   ' '   组成的
>        
>        (j) 查找子字符串
>        s.find(substring,[start [,end]])   正向 在s[start [,end]]范围内查找(可选)
>        s.rfind(substring,[start [,end]])  反向 在s[start [,end]]范围内查找(可选)
>        找不到返回 -1;
>        s.index(substring,[start [,end]])与s.find(substring,[start [,end]])类似
>         找不到返回ValueError  异常
>         同理 s.rindex
>        前面四个函数都返回的是位置
>        s.count(substring,[start [,end]]) 返回的找到的次数
>        
>        (K)合并和分解字符串
>        s.join(words) 和s.split(words) 注意和一般的习惯不一直,两个是不同的
>        参数关系,看例子就明白了
>        >>> "\n".join(["Hello","World","Python","Said"])
>        'Hello\nWorld\nPython\nSaid'
>        >>> print "\n".join(["Hello","World","Python","Said"])
>        Hello
>        World
>        Python
>        Said
>        >>> "This is a book".split(" ")
>        ['This', 'is', 'a', 'book']
>        
>        
>        (l)格式化字符串
>        和c的格式很象,如
>        >>> "%d and %d" % (-1,2)
>        -1 and 2
>        注意是 格式是  字符串 % tuple, tuple是参数表,
>        特别一点的是:
>        >>> "%c and %c"%(67,68)
>        'C and D' 
>        >>> "%r"%({"one":1,"two":2})
>        "{'two': 2, 'one': 1}"
>        参数r是 返回expr() 的值打印出来
>        >>> "%s"%({"one":1,"two":2})
>        "{'two': 2, 'one': 1}"
>        参数s是 返回str()的值打印出来
>        关于str 和expr的不同以后再说
>        更特别的
>        >>> print "%(name)s's height is %(height)d cm" \
>        ... ",%(name)s's weight is %(weight)d kg" % \
>        ... {"name":"Charles","height":170,"weight":70}
>        
>        Charles's height is 170 cm,Charles's weight is 70 kg 
>        
>       %d这种格式可以 用这个通用的公式:
>       %[][][> width>][][]
>       和c 中的printf的格式很相近
>       要注意的是 %mapping key 可以同一个变量对应多次。
>       也可以用命名空间来做 如
>       >>> def fun(a,b):
>       ... print "a is %(a)d,b is %(b)d" %locals()
>       ...
>       >>> fun(1,2)
>       a is 1,b is 2
>       locals()返回的是一个dictionary 变量名字为 key 变量的值为 value
>       排列格式
>       s.ljust(width)      左对其,不足补空格,超出就是字符串本身的长度
>       s.rjust(width)      右对其
>       s.center(width)    居中
>       s.strip()               去除字符串头尾的空白   包括\n \r  \t " " 
>       s.lstrip()              去左边空白
>       s.rstrip()              去右边空白
>       python 2.2.3  增加了可选参数
>>       >>> a="abdfsdfsdfggbbbaa"
>       >>> a.strip("ab")            # 头尾有 "a"或"b"就删掉
>       'dfsdfsdfgg'
>       
>  
>   
>  
>  以上是python的string,下一篇将是tuple sequence dictionary 等,将完成Python 的数据类型
>  
> 邹胖小 2005年6月2日 祝大家快乐安康

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 15:44

yllgmail fingerling at gmail.com
Fri Jun 3 15:44:22 HKT 2005

当一个未捕获的异常发生时,python将结束程序并打印一个堆栈跟踪信息,以及异常名
和附加信息。
如:
Traceback (most recent call last):

  File "G:\PYTHON23\Lib\site-packages\mod_python\apache.py", line 299, in
HandlerDispatch
    result = object(req)

  File "G:\PYTHON23\Lib\site-packages\mod_python\psp.py", line 297, in
handler
    p.run()
可以控制这个信息吗?比如不显示。


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 16:08

Zoom Quiet zoom.quiet at gmail.com
Fri Jun 3 16:08:22 HKT 2005

个人的学习笔记,个人整理是也乎
http://wiki.woodpecker.org.cn/moin/ChaoZouPyNotes
嗯嗯!
当然有精彩的反馈也是要整理的!

在 05-6-3,szhu<szhu at jadechip.com> 写道:
> 
> 要是管理员能把这些邮件整理一下, 放个精华贴就好了
> 
> On Thu, 2 Jun 2005 16:48:42 +0800
> Chao Zou <chao.zou at gmail.com> wrote:
> 
> > 继续:字符串
> > 13:字符串的构成
> >         "abd"  和'adf' 都是字符串,转意字符和c的很相似,但多了几个
> >         支持unicode 的如:\u{xxxx}
> >         >>> u'Hello\u0043\u0023World!'
> >         u'HelloC#World!'
> >
> >         "abc" \
> >         'def'
> >         表示的是字符串"abcdef"
> >         "abc"+"def" 表示的是两个字符串用 空白字符连接!(资料中说的)
> >         我不是很明白,因为输出的结果都是一样的。"空白字符"指的是什么呢?
> >
> >         要是很常的字符串就用""" 连着的三个"
> >         """
> >         this is a very very long string.
> >         And it contains a lot line.
> >         it is suitable to write document of function.
> >         """
> >         很有用可以写模块里面的文档
> >
> > 14:字符串的操作
> >           ps:我猜测有很多操作是能从库或模块中找到,虽然列了很多,多练习才有意义
> >
> >         (a)   int(str,base)用来转换字符串 从base进制到 10进制的,
> >         如int("111",2) ,返回的是7,int("111",4),返回的是21
> >        同理long(str,base)
> >
> >        (b)  字符串的连接
> >         >>> "Hello" + " " + "World"
> >        'Hello World'
> >
> >        (c)  首字母大写
> >        >>> "this is test".capitalize()
> >        'This is test'
> >
> >        (d)  全部变大写
> >        >>> "this is test".upper()
> >        'THIS IS TEST'
> >
> >        (e)  全部变小写
> >        >>> "THIS IS test".lower()
> >        'this is test'
> >
> >        (f)  大小写交换
> >        >>> "This Is Test".swapcase()
> >       'tHIS iS tEST'
> >
> >        (g)  获得长度
> >        >>> len("Hello World")
> >        11
> >
> >        (h)  获得子串
> >        和list获得子list一样
> >
> >        (i)  判断字符串的类型
> >        s.isalnum()        是否都是数字和数字
> >        s.isalpha()         是否都是字母
> >        s.isdigit()          是否都是数字
> >        s.islower() __    是否都是小写字母
> >        s.isupper() __   是否都是大写字母
> >        s.istitle() __      是否每个单词的首字母都大写了
> >        s.isspace() __   是否由  \n ,  \t ,  \r ,   ' '   组成的
> >
> >        (j) 查找子字符串
> >        s.find(substring,[start [,end]])   正向 在s[start [,end]]范围内查找(可选)
> >        s.rfind(substring,[start [,end]])  反向 在s[start [,end]]范围内查找(可选)
> >        找不到返回 -1;
> >        s.index(substring,[start [,end]])与s.find(substring,[start [,end]])类似
> >         找不到返回ValueError  异常
> >         同理 s.rindex
> >        前面四个函数都返回的是位置
> >        s.count(substring,[start [,end]]) 返回的找到的次数
> >
> >        (K)合并和分解字符串
> >        s.join(words) 和s.split(words) 注意和一般的习惯不一直,两个是不同的
> >        参数关系,看例子就明白了
> >        >>> "\n".join(["Hello","World","Python","Said"])
> >        'Hello\nWorld\nPython\nSaid'
> >        >>> print "\n".join(["Hello","World","Python","Said"])
> >        Hello
> >        World
> >        Python
> >        Said
> >        >>> "This is a book".split(" ")
> >        ['This', 'is', 'a', 'book']
> >
> >
> >        (l)格式化字符串
> >        和c的格式很象,如
> >        >>> "%d and %d" % (-1,2)
> >        -1 and 2
> >        注意是 格式是  字符串 % tuple, tuple是参数表,
> >        特别一点的是:
> >        >>> "%c and %c"%(67,68)
> >        'C and D'
> >        >>> "%r"%({"one":1,"two":2})
> >        "{'two': 2, 'one': 1}"
> >        参数r是 返回expr() 的值打印出来
> >        >>> "%s"%({"one":1,"two":2})
> >        "{'two': 2, 'one': 1}"
> >        参数s是 返回str()的值打印出来
> >        关于str 和expr的不同以后再说
> >        更特别的
> >        >>> print "%(name)s's height is %(height)d cm" \
> >        ... ",%(name)s's weight is %(weight)d kg" % \
> >        ... {"name":"Charles","height":170,"weight":70}
> >
> >        Charles's height is 170 cm,Charles's weight is 70 kg
> >
> >       %d这种格式可以 用这个通用的公式:
> >       %[][][> > width>][][]
> >       和c 中的printf的格式很相近
> >       要注意的是 %mapping key 可以同一个变量对应多次。
> >       也可以用命名空间来做 如
> >       >>> def fun(a,b):
> >       ... print "a is %(a)d,b is %(b)d" %locals()
> >       ...
> >       >>> fun(1,2)
> >       a is 1,b is 2
> >       locals()返回的是一个dictionary 变量名字为 key 变量的值为 value
> >       排列格式
> >       s.ljust(width)      左对其,不足补空格,超出就是字符串本身的长度
> >       s.rjust(width)      右对其
> >       s.center(width)    居中
> >       s.strip()               去除字符串头尾的空白   包括\n \r  \t " "
> >       s.lstrip()              去左边空白
> >       s.rstrip()              去右边空白
> >       python 2.2.3  增加了可选参数
> >       如
> >       >>> a="abdfsdfsdfggbbbaa"
> >       >>> a.strip("ab")            # 头尾有 "a"或"b"就删掉
> >       'dfsdfsdfgg'
> >
> >
> >
> >
> >  以上是python的string,下一篇将是tuple sequence dictionary 等,将完成Python 的数据类型
> >
> > 邹胖小 2005年6月2日 祝大家快乐安康
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 


-- 
[Time is unimportant, only life important!]

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 16:19

Qiangning Hong hongqn at gmail.com
Fri Jun 3 16:19:34 HKT 2005

yllgmail wrote:
> 当一个未捕获的异常发生时,python将结束程序并打印一个堆栈跟踪信息,以及异常名
> 和附加信息。
> 如:
> Traceback (most recent call last):
> 
>   File "G:\PYTHON23\Lib\site-packages\mod_python\apache.py", line 299, in
> HandlerDispatch
>     result = object(req)
> 
>   File "G:\PYTHON23\Lib\site-packages\mod_python\psp.py", line 297, in
> handler
>     p.run()
> 可以控制这个信息吗?比如不显示。

用try...except...把可能出抛出异常的语句块括起来,在except子句中进行处理。如

try:
    raise Exception("This is an exception")
except:
    pass

上面这段代码运行时就不会输出异常信息。

详细用法可参见python tutorial中关于异常处理的部分。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 18:48

yllgmail fingerling at gmail.com
Fri Jun 3 18:48:56 HKT 2005

怎么样才能不引发异常而退出呢?
def a():
    print "this is a function"

def b():
    raise Exception("This is an exception")

def c():
    try:
        b()
    except:
        需要的语句
    a()
执行c()时不想再执行a()了

----- Original Message ----- 
From: "Qiangning Hong" <hongqn at gmail.com>
To: <python-chinese at lists.python.cn>
Sent: Friday, June 03, 2005 4:19 PM
Subject: Re: [python-chinese] 发生异常时的显示信息可以控制吗


> yllgmail wrote:
> > 当一个未捕获的异常发生时,python将结束程序并打印一个堆栈跟踪信息,以及异
常名
> > 和附加信息。
> > 如:
> > Traceback (most recent call last):
> >
> >   File "G:\PYTHON23\Lib\site-packages\mod_python\apache.py", line 299,
in
> > HandlerDispatch
> >     result = object(req)
> >
> >   File "G:\PYTHON23\Lib\site-packages\mod_python\psp.py", line 297, in
> > handler
> >     p.run()
> > 可以控制这个信息吗?比如不显示。
>
> 用try...except...把可能出抛出异常的语句块括起来,在except子句中进行处理。
如
>
> try:
>     raise Exception("This is an exception")
> except:
>     pass
>
> 上面这段代码运行时就不会输出异常信息。
>
> 详细用法可参见python tutorial中关于异常处理的部分。
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 19:04

Qiangning Hong hongqn at gmail.com
Fri Jun 3 19:04:32 HKT 2005

yllgmail wrote:
> 怎么样才能不引发异常而退出呢?
> def a():
>     print "this is a function"
> 
> def b():
>     raise Exception("This is an exception")
> 
> def c():
>     try:
>         b()
>     except:
>         需要的语句
>     a()
> 执行c()时不想再执行a()了

仅在b()不出错时才执行a():

def c():
    try:
        b()
    except:
        anything_to_resolve_the_exception()
    else:
        a()


如果你的目的仅仅是让程序运行出错时不显示出错信息(BTW, 我个人觉得这不是
个好做法),可以用try...except...把你的主程序包起来就行:

if __name__ == '__main__':
    try:
        main()
    except:
        print "There is something wrong... but I won't show you :p"

还是那句话,多看看python tutorial中关于异常那节,了解一下什么是异常、怎
样捕获异常、异常捕获后怎么处理,你会找到更好的方法。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月03日 星期五 21:17

Gerald Lee leejd80 at gmail.com
Fri Jun 3 21:17:56 HKT 2005

Mod_Python里面直接把debug置为OFF即可不显示出错信息的

在05-6-3,yllgmail <fingerling at gmail.com> 写道:
> 
> 当一个未捕获的异常发生时,python将结束程序并打印一个堆栈跟踪信息,以及异常名
> 和附加信息。
> 如:
> Traceback (most recent call last):
> 
> File "G:\PYTHON23\Lib\site-packages\mod_python\apache.py", line 299, in
> HandlerDispatch
> result = object(req)
> 
> File "G:\PYTHON23\Lib\site-packages\mod_python\psp.py", line 297, in
> handler
> p.run()
> 可以控制这个信息吗?比如不显示。
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 



-- 
My Blog >> http://leejd.cndev.org
My QQ >> 9847243
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050603/814c8ec8/attachment-0001.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月04日 星期六 12:23

limodou limodou at gmail.com
Sat Jun 4 12:23:05 HKT 2005

这些东西如果个人有blog,这样自然就是整理过的了。

在 05-6-3,Zoom Quiet<zoom.quiet at gmail.com> 写道:
> 个人的学习笔记,个人整理是也乎
> http://wiki.woodpecker.org.cn/moin/ChaoZouPyNotes
> 嗯嗯!
> 当然有精彩的反馈也是要整理的!
> 
> 在 05-6-3,szhu<szhu at jadechip.com> 写道:
> >
> > 要是管理员能把这些邮件整理一下, 放个精华贴就好了
> >
> > On Thu, 2 Jun 2005 16:48:42 +0800
> > Chao Zou <chao.zou at gmail.com> wrote:
> >
> > > 继续:字符串
> > > 13:字符串的构成
> > >         "abd"  和'adf' 都是字符串,转意字符和c的很相似,但多了几个
> > >         支持unicode 的如:\u{xxxx}
> > >         >>> u'Hello\u0043\u0023World!'
> > >         u'HelloC#World!'
> > >
> > >         "abc" \
> > >         'def'
> > >         表示的是字符串"abcdef"
> > >         "abc"+"def" 表示的是两个字符串用 空白字符连接!(资料中说的)
> > >         我不是很明白,因为输出的结果都是一样的。"空白字符"指的是什么呢?
> > >
> > >         要是很常的字符串就用""" 连着的三个"
> > >         """
> > >         this is a very very long string.
> > >         And it contains a lot line.
> > >         it is suitable to write document of function.
> > >         """
> > >         很有用可以写模块里面的文档
> > >
> > > 14:字符串的操作
> > >           ps:我猜测有很多操作是能从库或模块中找到,虽然列了很多,多练习才有意义
> > >
> > >         (a)   int(str,base)用来转换字符串 从base进制到 10进制的,
> > >         如int("111",2) ,返回的是7,int("111",4),返回的是21
> > >        同理long(str,base)
> > >
> > >        (b)  字符串的连接
> > >         >>> "Hello" + " " + "World"
> > >        'Hello World'
> > >
> > >        (c)  首字母大写
> > >        >>> "this is test".capitalize()
> > >        'This is test'
> > >
> > >        (d)  全部变大写
> > >        >>> "this is test".upper()
> > >        'THIS IS TEST'
> > >
> > >        (e)  全部变小写
> > >        >>> "THIS IS test".lower()
> > >        'this is test'
> > >
> > >        (f)  大小写交换
> > >        >>> "This Is Test".swapcase()
> > >       'tHIS iS tEST'
> > >
> > >        (g)  获得长度
> > >        >>> len("Hello World")
> > >        11
> > >
> > >        (h)  获得子串
> > >        和list获得子list一样
> > >
> > >        (i)  判断字符串的类型
> > >        s.isalnum()        是否都是数字和数字
> > >        s.isalpha()         是否都是字母
> > >        s.isdigit()          是否都是数字
> > >        s.islower() __    是否都是小写字母
> > >        s.isupper() __   是否都是大写字母
> > >        s.istitle() __      是否每个单词的首字母都大写了
> > >        s.isspace() __   是否由  \n ,  \t ,  \r ,   ' '   组成的
> > >
> > >        (j) 查找子字符串
> > >        s.find(substring,[start [,end]])   正向 在s[start [,end]]范围内查找(可选)
> > >        s.rfind(substring,[start [,end]])  反向 在s[start [,end]]范围内查找(可选)
> > >        找不到返回 -1;
> > >        s.index(substring,[start [,end]])与s.find(substring,[start [,end]])类似
> > >         找不到返回ValueError  异常
> > >         同理 s.rindex
> > >        前面四个函数都返回的是位置
> > >        s.count(substring,[start [,end]]) 返回的找到的次数
> > >
> > >        (K)合并和分解字符串
> > >        s.join(words) 和s.split(words) 注意和一般的习惯不一直,两个是不同的
> > >        参数关系,看例子就明白了
> > >        >>> "\n".join(["Hello","World","Python","Said"])
> > >        'Hello\nWorld\nPython\nSaid'
> > >        >>> print "\n".join(["Hello","World","Python","Said"])
> > >        Hello
> > >        World
> > >        Python
> > >        Said
> > >        >>> "This is a book".split(" ")
> > >        ['This', 'is', 'a', 'book']
> > >
> > >
> > >        (l)格式化字符串
> > >        和c的格式很象,如
> > >        >>> "%d and %d" % (-1,2)
> > >        -1 and 2
> > >        注意是 格式是  字符串 % tuple, tuple是参数表,
> > >        特别一点的是:
> > >        >>> "%c and %c"%(67,68)
> > >        'C and D'
> > >        >>> "%r"%({"one":1,"two":2})
> > >        "{'two': 2, 'one': 1}"
> > >        参数r是 返回expr() 的值打印出来
> > >        >>> "%s"%({"one":1,"two":2})
> > >        "{'two': 2, 'one': 1}"
> > >        参数s是 返回str()的值打印出来
> > >        关于str 和expr的不同以后再说
> > >        更特别的
> > >        >>> print "%(name)s's height is %(height)d cm" \
> > >        ... ",%(name)s's weight is %(weight)d kg" % \
> > >        ... {"name":"Charles","height":170,"weight":70}
> > >
> > >        Charles's height is 170 cm,Charles's weight is 70 kg
> > >
> > >       %d这种格式可以 用这个通用的公式:
> > >       %[][][> > > width>][][]
> > >       和c 中的printf的格式很相近
> > >       要注意的是 %mapping key 可以同一个变量对应多次。
> > >       也可以用命名空间来做 如
> > >       >>> def fun(a,b):
> > >       ... print "a is %(a)d,b is %(b)d" %locals()
> > >       ...
> > >       >>> fun(1,2)
> > >       a is 1,b is 2
> > >       locals()返回的是一个dictionary 变量名字为 key 变量的值为 value
> > >       排列格式
> > >       s.ljust(width)      左对其,不足补空格,超出就是字符串本身的长度
> > >       s.rjust(width)      右对其
> > >       s.center(width)    居中
> > >       s.strip()               去除字符串头尾的空白   包括\n \r  \t " "
> > >       s.lstrip()              去左边空白
> > >       s.rstrip()              去右边空白
> > >       python 2.2.3  增加了可选参数
> > >       如
> > >       >>> a="abdfsdfsdfggbbbaa"
> > >       >>> a.strip("ab")            # 头尾有 "a"或"b"就删掉
> > >       'dfsdfsdfgg'
> > >
> > >
> > >
> > >
> > >  以上是python的string,下一篇将是tuple sequence dictionary 等,将完成Python 的数据类型
> > >
> > > 邹胖小 2005年6月2日 祝大家快乐安康
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> >
> 
> --
> [Time is unimportant, only life important!]
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月05日 星期日 12:00

子君 茆 adam_gliea at yahoo.com.cn
Sun Jun 5 12:00:12 HKT 2005

在wxApp类对象中能否嵌套wxApp类对象?
我有个程序 代码片段如下:
class MainApp( wxApp ):
    def OnInit( self ):
        global userfile
        try:
            userfile = open( "user.wy", "r" )
        except IOError:
             registerapp = RegisterApp( 0 )
             registerapp.MainLoop()
        records = userfile.readlines()
        print len( records )
        userfile.close()
        
        mainwindow = MainWindow( NULL, -1, "Test" )
        mainwindow.Show( true )
        self.SetTopWindow( mainwindow )
        return true
mainapp = MainApp( 0 )
mainapp.MainLoop()

如果没有user.wy文件我就会让程序调用RegisterApp类对象,它是一个注册窗口,但不知道为什么 从RegisterApp对象退出来之后,程序接下去就会非法操作, 请高手指教~~ 非常感谢~


 
 
		
---------------------------------
DO YOU YAHOO!?
  雅虎免费G邮箱-中国最强免费防毒反垃圾超大邮箱 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050605/8ced0b28/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月06日 星期一 08:50

yllgmail fingerling at gmail.com
Mon Jun 6 08:50:02 HKT 2005

谢谢,我是初学,不知道Mod_Python里面debug在什么地方?如何置?
  ----- Original Message ----- 
  From: Gerald Lee
  To: python-chinese at lists.python.cn
  Sent: Friday, June 03, 2005 9:17 PM
  Subject: Re: [python-chinese] 发生异常时的显示信息可以控制吗


  Mod_Python里面直接把debug置为OFF即可不显示出错信息的


  在05-6-3,yllgmail <fingerling at gmail.com> 写道:
    当一个未捕获的异常发生时,python将结束程序并打印一个堆栈跟踪信息,以及异
常名
    和附加信息。
    如:
    Traceback (most recent call last):

      File "G:\PYTHON23\Lib\site-packages\mod_python\apache.py", line 299,
in
    HandlerDispatch
        result = object(req)

      File "G:\PYTHON23\Lib\site-packages\mod_python\psp.py", line 297, in
    handler
        p.run()
    可以控制这个信息吗?比如不显示。

    _______________________________________________
    python-chinese list
    python-chinese at lists.python.cn
    http://python.cn/mailman/listinfo/python-chinese




  -- 
  My Blog >> http://leejd.cndev.org
  My QQ >> 9847243


----------------------------------------------------------------------------
--


  _______________________________________________
  python-chinese list
  python-chinese at lists.python.cn
  http://python.cn/mailman/listinfo/python-chinese
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050606/d7bbd9a9/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月06日 星期一 20:24

Gerald Lee leejd80 at gmail.com
Mon Jun 6 20:24:33 HKT 2005

在apache的配置文件里面,就是你增加的Mod-python部分的配置项


在05-6-6,yllgmail <fingerling at gmail.com> 写道:
> 
> 谢谢,我是初学,不知道Mod_Python里面debug在什么地方?如何置?
> 
> ----- Original Message ----- 
> *From:* Gerald Lee <leejd80 at gmail.com> 
> *To:* python-chinese at lists.python.cn 
> *Sent:* Friday, June 03, 2005 9:17 PM
> *Subject:* Re: [python-chinese] 发生异常时的显示信息可以控制吗
> 
> Mod_Python里面直接把debug置为OFF即可不显示出错信息的
> 
> 在05-6-3,yllgmail <fingerling at gmail.com> 写道: 
> > 
> > 当一个未捕获的异常发生时,python将结束程序并打印一个堆栈跟踪信息,以及异常名
> > 和附加信息。
> > 如:
> > Traceback (most recent call last):
> > 
> > File "G:\PYTHON23\Lib\site-packages\mod_python\apache.py", line 299, in
> > HandlerDispatch
> > result = object(req) 
> > 
> > File "G:\PYTHON23\Lib\site-packages\mod_python\psp.py", line 297, in
> > handler
> > p.run()
> > 可以控制这个信息吗?比如不显示。
> > 
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn
> > http://python.cn/mailman/listinfo/python-chinese
> > 
> 
> 
> 
> -- 
> My Blog >> http://leejd.cndev.org
> My QQ >> 9847243 
> 
> ------------------------------
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 


-- 
My Blog >> http://leejd.cndev.org
My QQ >> 9847243
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050606/d0ae3424/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月06日 星期一 22:22

子君 茆 adam_gliea at yahoo.com.cn
Mon Jun 6 22:22:40 HKT 2005

学校要做一个数据库软件
请问如何用python访问sql server(学校必须要用sql server)


		
___________________________________________________________
雅虎免费G邮箱-中国最强免费防毒反垃圾超大邮箱
http://cn.mail.yahoo.com/?id=77072

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月07日 星期二 09:20

alang yin alang.yl at gmail.com
Tue Jun 7 09:20:49 HKT 2005

方法很多,专门的python fro
SQL包我没有用过,但是可以用ADO或者ODBC来访问。你在网上找找在python中使用ADO或者ODBC的资料。我也写过一篇小文的。

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月07日 星期二 10:57

Neo Chan (netkiller) neo.chen at achievo.com
Tue Jun 7 10:57:21 HKT 2005

我写想一个CW 莫尔斯电报码练习软件.

请问如果控制机箱speak  发声.或声卡发声.
要可以控制,发音频率,时限.就成???

Neo Chan
Callsign: BG7NYT
73
-----Original Message-----
From: python-chinese-bounces at lists.python.cn
[mailto:python-chinese-bounces at lists.python.cn] On Behalf Of alang yin
Sent: Tuesday, June 07, 2005 9:21 AM
To: python-chinese at lists.python.cn
Subject: Re: [python-chinese] 如何用python访问sql server?

方法很多,专门的python fro
SQL包我没有用过,但是可以用ADO或者ODBC来访问。你在网上找找在python中使用ADO
或者ODBC的资料。我也写过一篇小文的。
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Neo Chan.vcf
Type: text/x-vcard
Size: 1081 bytes
Desc: not available
Url : http://lists.exoweb.net/pipermail/python-chinese/attachments/20050607/69ed97b0/NeoChan.vcf

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月07日 星期二 11:01

Zoom Quiet zoom.quiet at gmail.com
Tue Jun 7 11:01:31 HKT 2005

哈哈哈!!好主意!!
推荐 http://www.pygame.org/
PyGame 中集成了方便的多媒体控制包,可以直接运用哪!

在 05-6-7,Neo Chan (netkiller)<neo.chen at achievo.com> 写道:
> 我写想一个CW 莫尔斯电报码练习软件.
> 
> 请问如果控制机箱speak  发声.或声卡发声.
> 要可以控制,发音频率,时限.就成???
> 
> Neo Chan
> Callsign: BG7NYT
> 73
> -----Original Message-----
> From: python-chinese-bounces at lists.python.cn
> [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of alang yin
> Sent: Tuesday, June 07, 2005 9:21 AM
> To: python-chinese at lists.python.cn
> Subject: Re: [python-chinese] 如何用python访问sql server?
> 
> 方法很多,专门的python fro
> SQL包我没有用过,但是可以用ADO或者ODBC来访问。你在网上找找在python中使用ADO
> 或者ODBC的资料。我也写过一篇小文的。
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 
> 


-- 
[Time is unimportant, only life important!]

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月07日 星期二 11:07

Neo Chan (netkiller) neo.chen at achievo.com
Tue Jun 7 11:07:29 HKT 2005

你好朋友,能不能给发一份..还有手册文档..我上网不方便:(公司不让上...
我只能发邮件.


Neo Chan
Callsign: BG7NYT
73
-----Original Message-----
From: python-chinese-bounces at lists.python.cn
[mailto:python-chinese-bounces at lists.python.cn] On Behalf Of Zoom Quiet
Sent: Tuesday, June 07, 2005 11:02 AM
To: python-chinese at lists.python.cn
Subject: Re: [python-chinese] 我写想一个莫尔斯码练习软件.

哈哈哈!!好主意!!
推荐 http://www.pygame.org/
PyGame 中集成了方便的多媒体控制包,可以直接运用哪!

在 05-6-7,Neo Chan (netkiller)<neo.chen at achievo.com> 写道:
> 我写想一个CW 莫尔斯电报码练习软件.
> 
> 请问如果控制机箱speak  发声.或声卡发声.
> 要可以控制,发音频率,时限.就成???
> 
> Neo Chan
> Callsign: BG7NYT
> 73
> -----Original Message-----
> From: python-chinese-bounces at lists.python.cn
> [mailto:python-chinese-bounces at lists.python.cn] On Behalf Of alang yin
> Sent: Tuesday, June 07, 2005 9:21 AM
> To: python-chinese at lists.python.cn
> Subject: Re: [python-chinese] 如何用python访问sql server?
> 
> 方法很多,专门的python fro
> SQL包我没有用过,但是可以用ADO或者ODBC来访问。你在网上找找在python中使用
ADO
> 或者ODBC的资料。我也写过一篇小文的。
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
> 
> 


--
[Time is unimportant, only life important!]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Neo Chan.vcf
Type: text/x-vcard
Size: 1081 bytes
Desc: not available
Url : http://lists.exoweb.net/pipermail/python-chinese/attachments/20050607/8a74f3b3/NeoChan.vcf

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月07日 星期二 17:06

torres torreswang at gmail.com
Tue Jun 7 17:06:23 HKT 2005

Skipped content of type multipart/alternative-------------- next part --------------
ÓÃPYTHON½øÐÐÊý¾Ý¿â±à³Ì
 

ÓÃPYTHONÓïÑÔ½øÐÐÊý¾Ý¿â±à³Ì, ÖÁÉÙÓÐÁùÖÖ·½·¨¿É¹©²ÉÓÃ. ÎÒÔÚʵ¼ÊÏîÄ¿ÖвÉÓÃ,²»µ«¹¦ÄÜÇ¿´ó,¶øÇÒ·½±ã¿ì½Ý.ÒÔÏÂÊÇÎÒÔÚ¹¤×÷ºÍѧϰÖо­Ñé×ܽá.

 

·½·¨Ò»:ʹÓÃDAO (Data Access Objects)
 

Õâ¸öµÚÒ»ÖÖ·½·¨¿ÉÄÜ»á±È½Ï¹ýʱÀ².²»¹ý»¹ÊǷdz£ÓÐÓõÄ.¼ÙÉèÄãÒѾ­°²×°ºÃÁËPYTHONWIN,ÏÖÔÚ¿ªÊ¼¸úÎÒÉÏ·°É¡­¡­

ÕÒµ½¹¤¾ßÀ¸ÉÏTools¨¤COM MakePy utilities,Äã»á¿´µ½µ¯³öÒ»¸öSelect LibraryµÄ¶Ô»°¿ò,ÔÚÁбíÖÐÑ¡Ôñ'Microsoft DAO 3.6 Object Library'(»òÕßÊÇÄãËùÓеİ汾).

ÏÖÔÚʵÏÖ¶ÔÊý¾ÝµÄ·ÃÎÊ:

    #ʵÀý»¯Êý¾Ý¿âÒýÇæ

    import win32com.client

engine = win32com.client.Dispatch("DAO.DBEngine.35")

 

    #ʵÀý»¯Êý¾Ý¿â¶ÔÏó,½¨Á¢¶ÔÊý¾Ý¿âµÄÁ¬½Ó

    db = engine.OpenDatabase(r"c:\temp\mydb.mdb")
 

ÏÖÔÚÄãÓÐÁËÊý¾Ý¿âÒýÇæµÄÁ¬½Ó,Ò²ÓÐÁËÊý¾Ý¿â¶ÔÏóµÄʵÀý.ÏÖÔھͿÉÒÔ´ò¿ªÒ»¸örecordsetÁË. ¼ÙÉèÔÚÊý¾Ý¿âÖÐÒѾ­ÓÐÒ»¸ö±í½Ð×ö 'customers'. ΪÁË´ò¿ªÕâ¸ö±í,¶ÔÆäÖÐÊý¾Ý½øÐд¦Àí,ÎÒÃÇʹÓÃÏÂÃæµÄÓï·¨:

    rs = db.OpenRecordset("customers")

    #¿ÉÒÔ²ÉÓÃSQLÓïÑÔ¶ÔÊý¾Ý¼¯½øÐвÙ×Ý

    rs = db.OpenRecordset("select * from customers where state = 'OH'")

ÄãÒ²¿ÉÒÔ²ÉÓÃDAOµÄexecute·½·¨. ±ÈÈçÕâÑù:

    db.Execute("delete * from customers where balancetype = 'overdue' and name = 'bill'")

    #×¢Òâ,ɾ³ýµÄÊý¾Ý²»Äܸ´Ô­ÁËJ

EOF µÈÊôÐÔÒ²ÊÇ¿ÉÒÔ·ÃÎʵÄ, Òò´ËÄãÄÜдÕâÑùµÄÓï¾ä:

    while not rs.EOF:

        print rs.Fields("State").Value

        rs.MoveNext()

 

ÎÒ×ʼ²ÉÓÃÕâ¸ö·½·¨,¸Ð¾õ²»´í.

 

·½·¨¶þ:ʹÓÃPython DB API,Python ODBC modules(you can use ODBC API directly, but maybe it is difficult for most beginner.)

ΪÁËÔÚPythonÀïÃæÒ²ÄÜÓÐͨÓõÄÊý¾Ý¿â½Ó¿Ú,DB-SIGΪÎÒÃÇÌṩÁËPythonÊý¾Ý¿â.(ÓûÖªÏêÇé,·ÃÎÊDB-SIGµÄÍøÕ¾,http://www.python.org/sigs/db-sig/).  Mark

HammondµÄwin32À©Õ¹PythonWinÀïÃæ°üº¬ÁËÕâЩAPIµÄÒ»¸öÓ¦ÓÃ-odbc.pyd. Õâ¸öÊý¾Ý¿âAPI½ö½ö¿ª·ÅÁËһЩÓÐÏÞµÄODBCº¯ÊýµÄ¹¦ÄÜ(ÄDz»ÊÇËüµÄÄ¿µÄ),µ«ÊÇËüʹÓÃÆðÀ´ºÜ¼òµ¥,¶øÇÒÔÚwin32ÀïÃæÊÇÃâ·ÑµÄ.

°²×°odbc.pydµÄ²½ÖèÈçÏÂ:

  1. °²×°pythonÈí¼þ°ü:

      http://www.python.org/download/ 

  2. °²×°Mark HammondµÄ×îа汾µÄpython win32À©Õ¹ - PythonWin:

      http://starship.python.net/crew/mhammond/ 

  3. °²×°±ØÒªµÄODBCÇý¶¯³ÌÐò,ÓÃODBC¹ÜÀíÆ÷ΪÄãµÄÊý¾Ý¿âÅäÖÃÊý¾ÝÔ´µÈ²ÎÊý

 

ÄãµÄÓ¦ÓóÌÐò½«ÐèÒªÊÂÏȵ¼ÈëÁ½¸öÄ£¿é:

  dbi.dll  - Ö§³Ö¸÷ÖÖ¸÷ÑùµÄSQLÊý¾ÝÀàÐÍ,ÀýÈç:ÈÕÆÚ-dates

  odbc.pyd ¨C ±àÒë²úÉúµÄODBC½Ó¿Ú

 

ÏÂÃæÓÐÒ»¸öÀý×Ó:

   import dbi, odbc     # µ¼ÈëODBCÄ£¿é

   import time          # ±ê׼ʱ¼äÄ£¿é

 

   dbc = odbc.odbc(     # ´ò¿ªÒ»¸öÊý¾Ý¿âÁ¬½Ó

       'sample/monty/spam'  # 'Êý¾ÝÔ´/Óû§Ãû/ÃÜÂë'

       )

   crsr = dbc.cursor()  # ²úÉúÒ»¸öcursor

   crsr.execute(        # Ö´ÐÐSQLÓïÑÔ

       """

       SELECT country_id, name, insert_change_date

       FROM country

       ORDER BY name

       """

       )

   print 'Column descriptions:'  # ÏÔʾÐÐÃèÊö

   for col in crsr.description:

       print ' ', col

   result = crsr.fetchall()      # Ò»´ÎÈ¡³öËùÓеĽá¹û

   print '\nFirst result row:\n ', result[0]  # ÏÔʾ½á¹ûµÄµÚÒ»ÐÐ

   print '\nDate conversions:'   # ¿´¿´dbiDate¶ÔÏóÈçºÎ?

   date = result[0][-1]

   fmt = '  %-25s%-20s'

   print fmt % ('standard string:', str(date))

   print fmt % ('seconds since epoch:', float(date))

   timeTuple = time.localtime(date)

   print fmt % ('time tuple:', timeTuple)

   print fmt % ('user defined:', time.strftime('%d %B %Y', timeTuple))

ÏÂÃæÊǽá¹û:

   -------------------------------Êä³ö(output)----------------------------

   Column descriptions:

     ('country_id', 'NUMBER', 12, 10, 10, 0, 0)

     ('name', 'STRING', 45, 45, 0, 0, 0)

     ('insert_change_date', 'DATE', 19, 19, 0, 0, 1)

 

   First result row:

     (24L, 'ARGENTINA', )

 

   Date conversions:

     standard string:         Fri Dec 19 01:51:53 1997

     seconds since epoch:     882517913.0

     time tuple:              (1997, 12, 19, 1, 51, 53, 4, 353, 0)

     user defined:            19 December 1997

 

´ó¼ÒÒ²¿ÉÒÔÈ¥http://www.python.org/windows/win32/odbc.html¿´¿´,ÄǶùÓÐÁ½¸öHirendra HindochaдµÄÀý×Ó,»¹²»´í.

 

×¢Òâ, Õâ¸öÀý×ÓÖÐ,½á¹ûÖµ±»×ª»¯ÎªPython¶ÔÏóÁË.ʱ¼ä±»×ª»¯ÎªÒ»¸ödbiDate¶ÔÏó.ÕâÀï»áÓÐÒ»µãÏÞÖÆ,ÒòΪdbiDateÖ»ÄܱíʾUNIXʱ¼ä(1 Jan 1970 00:00:00 GMT)Ö®ºóµÄʱ¼ä.Èç¹ûÄãÏë»ñµÃÒ»¸ö¸üÔçµÄʱ¼ä,¿ÉÄÜ»á³öÏÖÂÒÂëÉõÖÁÒýÆðϵͳ±ÀÀ£.*_*

 

·½·¨Èý: ʹÓà calldllÄ£¿é

(Using this module, you can use ODBC API directly. But now the python version is 2.1, and I don¡¯t know if other version is compatible with it. ÀÏÎ×:-)

 

Sam RushingµÄcalldllÄ£¿é¿ÉÒÔÈÃPythonµ÷ÓÃÈκζ¯Ì¬Á¬½Ó¿âÀïÃæµÄÈκκ¯Êý,À÷º¦°É?¹þ.Æäʵ,ÄãÄܹ»Í¨¹ýÖ±½Óµ÷ÓÃodbc32.dllÀïÃæµÄº¯Êý²Ù×÷ODBC.SamÌṩÁËÒ»¸ö°ü×°Ä£¿éodbc.py,¾ÍÊÇÀ´×öÕâ¸öÊÂÇéµÄ.Ò²ÓдúÂëÀ´¹ÜÀíÊý¾ÝÔ´,°²×°ODBC,ʵÏÖºÍά»¤Êý¾Ý¿âÒýÇæ (Microsoft Access).ÔÚÄÇЩÑÝʾºÍÀý×Ó´úÂëÖÐ,»¹ÓÐһЩÈÃÈ˲àÄ¿µÄºÃ¶«¶«,±ÈÈçcbdemo.py,ÓÐÒ»¸öÐÅϢѭ»·ºÍ´°¿Ú¹ý³ÌµÄPythonº¯Êý!

 

[Äã¿ÉÒÔµ½Sam's Python SoftwareÈ¥ÕÒµ½calldllµÄÏà¹ØÁ¬½Ó,ÄǶù»¹ÓÐÆäËûºÃ¶àÓÐȤµÄ¶«Î÷]

 

ÏÂÃæÊÇ°²×°CALLDLL°üµÄ²½Öè:

  1. °²×°PYTHONÈí¼þ°ü(µ½ÏÖÔÚΪֹ×î¶àÖ§³Ö2.1°æ±¾)

  2. ÏÂÔØcalldll-2001-05-20.zip:

     ftp://squirl.nightmare.com/pub/python/python-ext/calldll-2001-05-20.zip

  3. ÔÚLIB·¾¶ÏÂÃæ´´½¨Ò»¸öз¾¶±ÈÈç˵:

     c:\Program Files\Python\lib\caldll\

  4. ÔÚԭĿ¼Ï½âѹcalldll.zip

  5. Òƶ¯calldll\lib\ÖÐËùÓеÄÎļþµ½ÉÏÃæÒ»¸ö¸¸Ä¿Â¼(calldll)ÀïÃæ,ɾ³ý×ÓĿ¼(lib)

  6. ÔÚCALLĿ¼ÀïÃæÉú³ÉÒ»¸öfile __init__.pyÎļþ,ÏóÕâÑù:

     # File to allow this directory to be treated as a python 1.5

package.

  7. ±à¼­calldll\odbc.py:

     ÔÚ"get_info_word"ºÍ"get_info_long"ÀïÃæ,¸Ä±ä"calldll.membuf"Ϊ"windll.membuf"

 

ÏÂÃæÊÇÒ»¸öÔõôʹÓÃcalldllµÄÀý×Ó:

   from calldll import odbc

 

   dbc = odbc.environment().connection()   # create connection

   dbc.connect('sample', 'monty', 'spam')  # connect to db

   # alternatively, use full connect string:

   # dbc.driver_connect('DSN=sample;UID=monty;PWD=spam')

   print 'DBMS: %s %s\n' % (    # show DB information

       dbc.get_info(odbc.SQL_DBMS_NAME),

       dbc.get_info(odbc.SQL_DBMS_VER)

       )

   result = dbc.query(          # execute query & return results

       """

       SELECT country_id, name, insert_change_date

       FROM country

       ORDER BY name

       """

       )

   print 'Column descriptions:' # show column descriptions

   for col in result[0]:

       print ' ', col

   print '\nFirst result row:\n ', result[1]  # show first result row

 -------------------------------output(Êä³ö)--------------------------------

 

   DBMS: Oracle 07.30.0000

 

   Column descriptions:

     ('COUNTRY_ID', 3, 10, 0, 0)

     ('NAME', 12, 45, 0, 0)

     ('INSERT_CHANGE_DATE', 11, 19, 0, 1)

 

   First result row:

     ['24', 'ARGENTINA', '1997-12-19 01:51:53']

 

 

·½·¨ËÄ: ʹÓÃActiveX Data Object(ADO)

ÏÖÔÚ¸ø³öÒ»¸öͨ¹ýMicrosoft's ActiveX Data Objects (ADO)À´Á¬½ÓMS Access 2000Êý¾Ý¿âµÄʵÀý.ʹÓÃADOÓÐÒÔϼ¸¸öºÃ´¦: Ê×ÏÈ,ÓëDAOÏà±È,ËüÄܸü¿ìµØÁ¬½ÓÊý¾Ý¿â;Æä´Î,¶ÔÓÚÆäËû¸÷ÖÖÊý¾Ý¿â(SQL Server, Oracle, MySQL, etc.)À´Ëµ,ADO¶¼ÊǷdz£ÓÐЧ¶ø·½±ãµÄ;ÔÙÓÐ,ËüÄÜÓÃÓÚXMLºÍÎı¾ÎļþºÍ¼¸ºõÆäËûËùÓÐÊý¾Ý,Òò´Ë΢ÈíÒ²½«Ö§³ÖËü±ÈDAO¾ÃһЩ.

 

µÚÒ»¼þÊÂÊÇÔËÐÐmakepy.¾¡¹ÜÕâ²»ÊDZØÐëµÄ,µ«ÊÇËü¶ÔÓÚÌá¸ßËÙ¶ÈÓаïÖúµÄ.¶øÇÒÔÚPYTHONWINÀïÃæÔËÐÐËü·Ç³£¼òµ¥: ÕÒµ½¹¤¾ßÀ¸ÉÏTools¨¤COM MakePy utilities,Äã»á¿´µ½µ¯³öÒ»¸öSelect LibraryµÄ¶Ô»°¿ò, ÔÚÁбíÖÐÑ¡Ôñ¡¯Microsoft ActiveX Data Objects 2.5 Library ¡®(»òÕßÊÇÄãËùÓеİ汾).

È»ºóÄãÐèÒªÒ»¸öÊý¾ÝÔ´ÃûData Source Name [DSN] ºÍÒ»¸öÁ¬½Ó¶ÔÏó. [ÎұȽÏϲ»¶Ê¹ÓÃDSN-Less Á¬½Ó×Ö·û´® (ÓëϵͳÊý¾ÝÔ´ÃûÏà±È,Ëü¸üÄÜÌá¸ßÐÔÄÜÇÒÓÅ»¯´úÂë)]
¾ÍMS AccessÀ´Ëµ,ÄãÖ»ÐèÒª¸´ÖÆÏÂÃæµÄDSN¼´¿É.¶ÔÓÚÆäËûÊý¾Ý¿â,»òÕßÏóÃÜÂëÉèÖÃÕâЩ¸ß¼¶µÄ¹¦ÄÜÀ´Ëµ,ÄãÐèҪȥ [Control Panel¿ØÖÆÃæ°å | ¹ÜÀí¹¤¾ßAdministrative Tools | Êý¾ÝÔ´Data Sources (ODBC)]. ÔÚÄÇÀï,Äã¿ÉÒÔÉèÖÃÒ»¸öϵͳÊý¾ÝÔ´DSN. ÄãÄܹ»ÓÃËü×÷Ϊһ¸öϵͳÊý¾ÝÔ´Ãû,»òÕ߸´ÖÆËüµ½Ò»¸ö×Ö·û´®ÀïÃæ,À´²úÉúÒ»¸öDSN-Less µÄÁ¬½Ó×Ö·û´®. Äã¿ÉÒÔÔÚÍøÉÏËÑË÷DSN-Less Á¬½Ó×Ö·û´®µÄÏà¹Ø×ÊÁÏ. ºÃÁË,ÕâÀïÓÐһЩ²»Í¬Êý¾Ý¿âµÄDSN-LessÁ¬½Ó×Ö·û´®µÄÀý×Ó:SQL Server, Access, FoxPro, Oracle , Oracle, Access, SQL Server, ×îºóÊÇ MySQL. 

>>> import win32com.client

>>> conn = win32com.client.Dispatch(r'ADODB.Connection')

>>> DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb;'

>>> conn.Open(DSN) 

¾­¹ýÉÏÃæµÄÉèÖÃÖ®ºó,¾Í¿ÉÒÔÖ±½ÓÁ¬½ÓÊý¾Ý¿âÁË:

Ê×ÒªµÄÈÎÎñÊÇ´ò¿ªÒ»¸öÊý¾Ý¼¯/Êý¾Ý±í 

>>> rs = win32com.client.Dispatch(r'ADODB.Recordset')

>>> rs_name = 'MyRecordset'

>>> rs.Open('[' + rs_name + ']', conn, 1, 3)

        

[1ºÍ3Êdz£Êý.´ú±íadOpenKeyset ºÍadLockOptimistic

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月07日 星期二 22:46

子君 茆 adam_gliea at yahoo.com.cn
Tue Jun 7 22:46:04 HKT 2005

我连接数据库后 得到的值类型是实例类型 
但是wxGrid只接受wxString类型

如何把instance类型转换成字符串 ?

请高手帮忙 先谢谢了~ 


	

	
		
___________________________________________________________
欢迎注册雅虎超大容量免费邮箱 
http://cn.mail.yahoo.com 


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年06月08日 星期三 22:54

limodou limodou at gmail.com
Wed Jun 8 22:54:58 HKT 2005

使用str()试试。

在 05-6-7,子君 茆<adam_gliea at yahoo.com.cn> 写道:
> 
> 我连接数据库后 得到的值类型是实例类型 
> 但是wxGrid只接受wxString类型
> 
> 如何把instance类型转换成字符串 ?
> 
> 请高手帮忙 先谢谢了~
> 
> 
> ___________________________________________________________
> 欢迎注册雅虎超大容量免费邮箱
> http://cn.mail.yahoo.com
> 
> 


-- 
I like python! 
My Donews Blog: http://www.donews.net/limodou
New Google Maillist: http://groups-beta.google.com/group/python-cn

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号