Posts Tagged ‘python’

python pdb 基础调试

首先你选择运行的 py
python -m pdb myscript.py
(Pdb) 会自动停在第一行,等待调试,这时你可以看看 帮助
(Pdb) h
说明下这几个关键 命令
>断点设置
(Pdb)b 10 #断点设置在本py的第10行
或(Pdb)b ots.py:20 #断点设置到 ots.py第20行
删除断点(Pdb)b #查看断点编号
(Pdb)cl 2 #删除第2个断点
禁用断点(Pdb)disable 2 #禁用第2个断点
设置某个断点的count,当count为0的时候断点状态为active,count不为0的时候每一次进入断点时候count自减
(Pdb) condition 2 10 #当运行10次后激活断点2
>运行
(Pdb)n #单步运行
(Pdb)s #细点运行 也就是会下到,方法
(Pdb)c #跳到下个断点
(Pdb)l(ist) [first [,last]] #列出代码
(Pdb)a(rgs) #打印出当前函数的参数
>查看
(Pdb)p param #查看当前 变量值
(Pdb)l #查看运行到某处代码
(Pdb)a #查看全部栈内变量
(Pdb)(!) statement #执行代码
(Pdb) q(uit) #退出

python 多进程的服务端

直接贴代码了。

Python-字符串操作方法

转载:http://www.sou5.cn/archives/636.html
字符串中字符大小写的变换:
* S.lower()   #小写
* S.upper()   #大写
* S.swapcase()   #大小写互换
* S.capitalize()   #首字母大写
* String.capwords(S)
#这是模块中的方法。它把S用split()函数分开,然后用capitalize()把首字母变成大写,最后用join()合并到一起
* S.title()    #只有首字母大写,其余为小写,模块中没有这个方法
字符串在输出时的对齐:
* S.ljust(width,[fillchar])
#输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。
* S.rjust(width,[fillchar])    #右对齐
* S.center(width, [fillchar])    #中间对齐
* S.zfill(width)   #把S变成width长,并在右对齐,不足部分用0补足
字符串中的搜索和替换:
* S.find(substr, [start, [end]])
#返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索
* S.index(substr, [start, [end]])
#与find()相同,只是在S中没有substr时,会返回一个运行时错误
* S.rfind(substr, [start, [end]])
#返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号
* S.rindex(substr, [start, [end]])
* S.count(substr, [start, [end]])    #计算substr在S中出现的次数
* S.replace(oldstr, newstr, [count])
#把S中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换
* S.strip([chars])
#把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None
* S.lstrip([chars])
* S.rstrip([chars])
* S.expandtabs([tabsize])
#把S中的tab字符替换没空格,每个tab替换为tabsize个空格,默认是8个
字符串的分割和组合:
* S.split([sep, [maxsplit]])
#以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符
* S.rsplit([sep, [maxsplit]])
* S.splitlines([keepends])
#把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。
* S.join(seq) #把seq代表的序列──字符串序列,用S连接起来
字符串的mapping,这一功能包含两个函数:
* String.maketrans(from, to)
#返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。
* S.translate(table[,deletechars])
#使用上面的函数产后的翻译表,把S进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果S为unicode字符串,那么就不支持 [...]

用Python编写WEB服务器压力测试工具

别人写的,看着不错就引用。原文地址:http://www.xinqdian.com/index.php/archives/125/
自己也写过类似的。不过代码太丑陋了,就不贴出来了。大致思想一样,把压力最大的一些链接挑出来,一个劲的加线程数量,每台机器要加500线程以上都没问题。mac os 注意看下ulimit 是否有限制。

Tkinter 学习

最简单的例子

计算器的例子

计算器图片

用python 写一个smtp 的客户端

需求

提供命令行的邮件发送模式,这样可以把php.ini的send_mail_path设置为这个脚本
命令行模式收到邮件,将邮件内容存入队列数据库即算发送完成
支持设置多个smtp帐号
该脚本需要起一个常驻进程
常驻进程主线程监听一个sock文件, sock端口用于接受外部命令,如立即检查邮件队列等
常驻进程为每个smtp帐号开启一个线程,邮件队列中有邮件时候,每个线程都能从邮件队列中读取邮件并发送,没有邮件时候,所有线程都阻塞
常驻进程需要开启一个线程没60s检查一次队列数据库是否有新邮件到达,有就加入邮件队列,同时检查是否有死掉的发送邮件的线程
命令行发送邮件前先检查常驻进程是否存在,不存在就开启一个常驻进程

下一期开发规划:

支持检查远程服务是否有要发送的邮件,有就通过远程读取,并加入邮件队列

应用场景:

网站如果通过自己服务sendmail发送邮件,容易被其他邮件服务当垃圾邮件过滤,所以现在只能使用google smtp帐号发送,但使用php进行smtp 邮件发送,邮件发送时间太长,而且还不能禁止大并发发送。所以想到用python来做邮件队列,能监测邮件发送的一些情况

进度:

正准备开发。。。