2005年06月02日 星期四 16:48
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
2005年06月02日 星期四 17:54
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>
2005年06月03日 星期五 14:11
要是管理员能把这些邮件整理一下, 放个精华贴就好了 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日 祝大家快乐安康]
2005年06月03日 星期五 15:44
当一个未捕获的异常发生时,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() 可以控制这个信息吗?比如不显示。
2005年06月03日 星期五 16:08
个人的学习笔记,个人整理是也乎 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!]]
2005年06月03日 星期五 16:19
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中关于异常处理的部分。
2005年06月03日 星期五 18:48
怎么样才能不引发异常而退出呢? 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
2005年06月03日 星期五 19:04
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中关于异常那节,了解一下什么是异常、怎 样捕获异常、异常捕获后怎么处理,你会找到更好的方法。
2005年06月03日 星期五 21:17
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
2005年06月04日 星期六 12:23
这些东西如果个人有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]
2005年06月05日 星期日 12:00
在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
2005年06月06日 星期一 08:50
谢谢,我是初学,不知道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
2005年06月06日 星期一 20:24
在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
2005年06月06日 星期一 22:22
学校要做一个数据库软件 请问如何用python访问sql server(学校必须要用sql server) ___________________________________________________________ 雅虎免费G邮箱-中国最强免费防毒反垃圾超大邮箱 http://cn.mail.yahoo.com/?id=77072
2005年06月07日 星期二 09:20
方法很多,专门的python fro SQL包我没有用过,但是可以用ADO或者ODBC来访问。你在网上找找在python中使用ADO或者ODBC的资料。我也写过一篇小文的。
2005年06月07日 星期二 10:57
我写想一个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
2005年06月07日 星期二 11:01
哈哈哈!!好主意!! 推荐 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!]
2005年06月07日 星期二 11:07
你好朋友,能不能给发一份..还有手册文档..我上网不方便:(公司不让上... 我只能发邮件. 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
2005年06月07日 星期二 17:06
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
2005年06月07日 星期二 22:46
我连接数据库后 得到的值类型是实例类型 但是wxGrid只接受wxString类型 如何把instance类型转换成字符串 ? 请高手帮忙 先谢谢了~ ___________________________________________________________ 欢迎注册雅虎超大容量免费邮箱 http://cn.mail.yahoo.com
2005年06月08日 星期三 22:54
使用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
Zeuux © 2025
京ICP备05028076号