python 做系统如何做点名系统程序

2008年12月 Linux/Unix社区大版内专家分月排行榜第二
2009年3月 Linux/Unix社区大版内专家分月排行榜第三
2001年 总版技术专家分年内排行榜第七
2002年1月 总版技术专家分月排行榜第一
2012年1月 其他开发语言大版内专家分月排行榜第二2011年5月 其他开发语言大版内专家分月排行榜第二2010年12月 其他开发语言大版内专家分月排行榜第二2009年2月 其他开发语言大版内专家分月排行榜第二2008年9月 其他开发语言大版内专家分月排行榜第二2008年8月 其他开发语言大版内专家分月排行榜第二2008年5月 其他开发语言大版内专家分月排行榜第二2007年11月 其他开发语言大版内专家分月排行榜第二
2011年4月 其他开发语言大版内专家分月排行榜第三2011年1月 其他开发语言大版内专家分月排行榜第三2009年6月 其他开发语言大版内专家分月排行榜第三2009年4月 其他开发语言大版内专家分月排行榜第三2009年1月 其他开发语言大版内专家分月排行榜第三2008年11月 其他开发语言大版内专家分月排行榜第三2008年7月 其他开发语言大版内专家分月排行榜第三2008年6月 其他开发语言大版内专家分月排行榜第三2006年9月 其他开发语言大版内专家分月排行榜第三
2012年1月 硬件/嵌入开发大版内专家分月排行榜第二2011年11月 硬件/嵌入开发大版内专家分月排行榜第二2011年10月 硬件/嵌入开发大版内专家分月排行榜第二2011年9月 硬件/嵌入开发大版内专家分月排行榜第二
2012年3月 硬件/嵌入开发大版内专家分月排行榜第三2012年2月 硬件/嵌入开发大版内专家分月排行榜第三
2001年 总版技术专家分年内排行榜第七
2002年1月 总版技术专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。Python 程序如何高效地调试? - 知乎2203被浏览285220分享邀请回答import sys
class ExceptionHook:
instance = None
def __call__(self, *args, **kwargs):
if self.instance is None:
from IPython.core import ultratb
self.instance = ultratb.FormattedTB(mode='Plain',
color_scheme='Linux', call_pdb=1)
return self.instance(*args, **kwargs)
sys.excepthook = ExceptionHook()
然后在你的项目代码某个地方 import crash_on_ipy 就可以了。这个方法不需要 IDE.30432 条评论分享收藏感谢收起a = 1
执行肯定是报错的:? python test.py
Traceback (most recent call last):
File "test.py", line 4, in &module&
ZeroDivisionError: integer division or modulo by zero
有点经验的人一眼看去就知道 是因为分母是0造成的。可是脚本执行结束了,要是调试还得不断的在对应位置加print。绝招就是:? ipython test.py --pdb
---------------------------------------------------------------------------
ZeroDivisionError
Traceback (most recent call last)
/Users/dongweiming/test/test.py in &module&()
----& 4 a / b
ZeroDivisionError: integer division or modulo by zero
*** NameError: name 'pdb' is not defined
& /Users/dongweiming/test/test.py(4)&module&()
----& 4 a / b
# p是print的别名
程序运行在错误的地方,嘎.. 停住了,保存了错误上下文,进入pdb环境,直接调试去吧,不要太开心。说到这里,ipdb(pdb)可以设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。它有很多快捷键:ipdb& help
Documented commands (type help &topic&):
========================================
其中up,down,n,j,l,where,s, args等我都非常常用,我非常建议你每个快捷键都了解一下。当然很懒的话,你们也有福利,看
。第二种:隐藏BUG,也就是并没有报错,但是输出不符合预期,这种的比较烦,因为如果你经验少写的时候又不咋专心的话,基本上就得挨个地方去确认,有人说,「import pdb pdb.set_trace() 」,嗯很标准的方案,但是我一般不用。原因是什么呢,比如调试Web应用,如果set_trace()的话,需要点多个next才能到你想调试的地方,手指头都点木了。。所以我一般使用如下三个方法:1. 抛异常。直接让你想要调试的位置让它先跑个异常,比如Flask的DEBUG的模式下,werkzeug里面的DebuggedApplication就会把Web页面渲染成一个可调试和可执行的环境,直接到上面调试:2. 2. 在对应位置使用print和logging。这是最基础的玩法。我一般只会在已经心理有数,只是需要看看日志输出来确认的时候加临时的。平时的应用日志也会有常规的记录,并且会记录堆栈(当然,使用sentry之类的方式搜集日志是最好的),比如重要的上线过程中,出了问题但是开发环境又不好模拟出来的时候,「tail -f」日志文件们,这样出现问题一看就看到了。 说到这里再推荐一个很有意思的项目:
,它是在我看pycon2013演讲中发现的,有兴趣可以看看, 。我之前常用它。3. 自己维护一些用于调试的库。我会把工作中常用到的、有用的一些函数、方法搜集起来,放在一个库里。其中有个获取调用栈的函数类似这样:import sys
def get_cur_info():
print sys._getframe().f_code.co_filename
# 当前文件名
print sys._getframe(0).f_code.co_name
# 当前函数名
print sys._getframe(1).f_code.co_name # 调用该函数的函数的名字,如果没有被调用,则返回module
print sys._getframe().f_lineno # 当前行号
可以通过看当前上下文的调用栈的输出来帮助你揪出那个隐藏的「虫」欢迎关注本人的微信公众号获取更多Python相关的内容(也可以直接搜索「Python之美」): (二维码自动识别)12216 条评论分享收藏感谢收起更多4 个回答被折叠()看 Python 超级程序员使用什么开发工具 - 编程语言 - ITeye资讯
相关知识库:
本文来自,原文作者以个人的身份采访了几个顶尖的Python程序员,问了他们以下5个简单的问题:
当前你的主要开发任务是什么?
你在项目中使用的电脑是怎样的?
你使用什么IDE开发?
你将来的计划是什么?
有什么给Python程序员的建议?
就是这几个问题,我找了几个顶尖的程序员和编程书籍作家,问他们这几个相同的问题。下面是他们的回答,希望在他们的回答中你能找到一些可以让你的开发更便捷的工具。
一、Alex Martelli
人物简介:Alex Martelli是一位意大利计算机软件程序员,他是Python软件基金会的成员。从2005年初开始,他以“?ber技术首领”的身份在加利福尼亚景山谷歌总部工作。他拥有意大利Bologna大学电子工程学位(1980)。他是《Python in a Nutshell》一书的作者,他还和其他人合著了《Python Cookbook》,他还写了一些其它一些作品,大部分都是和Python相关的。因为他对Python社区杰出的贡献,他被授予的荣誉包括2002 Activators’ Choice Award和2006 Frank Willison award。
你可以通过他的了解更多关于他的信息。
1.& 当前你的主要开发任务是什么?
给我的老板(谷歌)开发商业软件,大部分是商业智能方面。
2.& 你在项目中使用的硬件机器是怎样的?
基本上都是谷歌的云服务器,通过谷歌APP引擎直接或间接的使用。有时候也使用一个Unix工作站或Macbook Air,但很少。
3.& 你使用什么IDE开发?
vim、gvim、mvim,偶尔用一下iPython,但这好像不能算是IDE吧。
4.& 你将来的计划是什么?
应该还会待在谷歌——具体的研究方向那要看实际情况。
5.& 有什么给Python程序员的建议?
学习一下App Engine(通过webapp2 或flask, jinja2, &c以及其它类似django的轻量级环境):它们大部分都会对你的web项目有很好的用处——如果你想在这些环境之外的地方部署web应用,会是你最方便的选择。
二、Daniel Greenfeld
人物简介: Daniel Greenfeld是《Two Scoops of django》一书的合著人。他有超过6年的在Django领域的研究经验。之前他在美国宇航局做开发,就是在那里他开始了他的Python之旅,一直到现在。他目前是的负责人。
你可以通过他的Twitter:
和他的获取他的更多信息。
1.& 当前你的主要开发任务是什么?
我现在的工作主要是客户端方面,基本上都是用Python。内容服务方面有时候会用到Django,但当前的主要工作基本上跟web无关。
2.& 你在项目中使用的硬件机器是怎样的?
硬件方面,我使用一个2011年的Macbook Air。因为我的开发方式,像Macbook Air这样的超级本用起来非常舒服。可苹果的产品一般都很贵,我就自己配了一个,我打算所有的任务都用它来做。如果哪天我能有一个新的笔记本,我想试试Linux的超级本或Window8的平板(以前我是靠虚拟机运行Windows8)。
3.& 你使用什么IDE开发?
我使用Sublime Text。我更喜欢文本编辑器,而不是IDE,因为我喜欢深入研究程序库和它们的文档,而不是通过IDE工具来提示我。
4.& 你将来的计划是什么?
我未来的计划就是编程,锻炼,做我最擅长的事情。也许会去一个新地方旅游。我喜欢去没有去过的地方,认识新朋友,品尝没吃过的食物。但大部分我的旅游都是基于客户的需求,今年我不知道什么时候会有这样的机会。
5.& 有什么给Python程序员的建议?
我给Python程序员的建议是挑战极限。寻找新的代码库,研究它们,使用它们。它们有些会不是很好,不好的东西也会教会你一些东西(不该做的事情)。
三、Miguel Grinberg
人物简介: Miguel是一个程序员,摄影师和电影制作人。生活在美国俄勒冈州。他目前正在写一本关于使用Python和Flask做web开发的书,将会由 O’Reilly Media出版。这本书的官方网站是.
你可以通过他的Twitter:
和他的获取更多信息。
1.& 当前你的主要开发任务是什么?
也许你会吃惊,工作中我并不做web开发。我在为做视频软件。C++是我在工作中使用的主要语言,但我们却使用了一个古老的用Python写的自动化单元测试框架,用起来很有趣。
空闲时间里我目前的第一大任务就是给O’Reilly出版社写一本关于Flask为框架的书,基本上快写成了。
2.& 你在项目中使用的硬件机器是怎样的?
我的机器是一个双系统的台式机,装的是Ubuntu和Windows8.1。我还有一个Mac OS X笔记本。
我在跨平台方面有些变态。除了给Arduino这样的嵌入式系统写代码外,所有其它我写的代码(不管什么语言),都需要在三种平台上运行。为了达到这个目的,我会不断的在Linux,Windows和OS X机器间切换。
3.& 你使用什么IDE开发?
我有一些最爱。PyCharm非常棒,在大型项目时我越来越依赖它,主要是因为它的交互式的调试工具。
在Windows平台上我会使用Visual Studio的一个Python插件,免费的,非常出色,我估计大部分人没听说过它。
我还经常使用SublimeText,通常是在笔记本上使用它。
Notepad++是我在Window台式机上最顺手的工具。在我所有的电脑上都装有一个非常老的Vim,即使在Windows上也使用Cygwin运行它。
4.& 你将来的计划是什么?
我在四月份的PyCon大会上会有一个关于Flask的演讲,我下一步开始着手准备材料,因为书已经快写好了。
我最近没怎么写博客,我很想写一点。我想能多腾出一些时间写博客。我已经拟了一份话题目录,准备按着这个清单写。如果需要的话,我可以把里面的一个关于Flask上的web sockets的文章提到最前面。
5.& 有什么给Python程序员的建议?
我对所有程序员——不光是Python爱好者——的建议是,多去实践,然后把它们分享给世界。分享很重要,从别人那获得反馈是让你提高的好方法。
而对于Python程序员我想说的是,如果我们只需要用嘴去讨论Python2和Python3的差别、而不需要花时间将众多的软件移植到Python3,那该多好。玩笑。
英文原文: / 翻译:
那种level的根本都不需要ykssky 写道1, 2 俩牛太不珍惜生命了...有 IDE 对大 project 做 refactor 啥的不知道省多少时间.academic 的装装就算了, industry 的说不需要的直接打脸回去行了, 就一用别人语言的高级码工别太装... 狗狗搞开发语言的都不吹不需要IDE, 普遍观念是IDE极大提高refactor 的效率.
而对于Python程序员我想说的是,如果我们只需要用嘴去讨论Python2和Python3的差别、而不需要花时间将众多的软件移植到Python3,那该多好。玩笑。 我纠结了好久到底是学2还是3
呵呵,我在 visual studio 里开发
那种level的根本都不需要ykssky 写道1, 2 俩牛太不珍惜生命了...有 IDE 对大 project 做 refactor 啥的不知道省多少时间.
1, 2 俩牛太不珍惜生命了...有 IDE 对大 project 做 refactor 啥的不知道省多少时间.
传统而老派风格的程序员令人尊敬(千夫影子)
第三方登录:今天看啥 热点:
python实现的重启关机程序实例,python实例
本文实例讲述了Python实现的重启关机程序的方法,对Python程序设计有一定的参考价值。具体方法如下:
实例代码如下:
#!/usr/bin/python
#coding=utf-8
import time
from os import system
runing = True
while runing:
input = raw_input('关机(s)OR重启(r)?(q退出)')
input = input.lower()
if input == 'q' or input =='quit':
runing = False
print '程序退出'
seconds = int(raw_input('请输入暂停时间(单位:秒):'))
time.sleep(seconds)
print '暂停时间:', seconds
runing = False
if input == 's':
print '关机ing'
system('halt')
elif input == 'r':
print '重启ing'
system('reboot')
print '程序错误重新输入'
runing = True
print '程序结束~~~!'
该实例在linux下测试通过,windows的话需要判断执行命令。
如果一定要用python实现的话 就直接用os.system()或者os.popen()模块调用windows的shutdown命令去关机就可以了
你弄得太复杂了。第一sleep是个很慢的东东。 你应该简化逻辑。把时间管理单独抽象出一个类。 这种事情最好的办法是,用操作系统自带的计划任务。不管是windows还是linux都有计划任务。然后通过计划任务调用你的小程序。 5-10句话解决。 此外你对于time, datetime库使用还是有限,不用这么复杂的逻辑,大部分你的想法人家库里都有。自己看看,可以很简单实现了。 DIY,do not repeat yourself, 这个是PYTHON编程原则。不用重复做没有意义的事情。
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&
Python教程最近更新}

我要回帖

更多关于 python 做应用程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信