精华内容
下载资源
问答
  • 但是很多人学习了这门余元语法和基本功能之后却不知道Python能干什么以及怎么做。http://Realpython.com上面一篇文章于是把Python可以做事情以及不适合做事情进行了总结。更棒是,里面还列举了如何做这些...

    Python因为简单全面易用而成为近年来大热的编程语言。但是很多人学习了这门余元的语法和基本功能之后却不知道Python能干什么以及怎么做。http://Realpython.com上面的一篇文章于是把Python可以做的事情以及不适合做的事情进行了总结。更棒的是,里面还列举了如何做这些事情的教程和项目案例,是非常适合上手的资源汇总。

    你做到了:你已经完成了一门课程,或者终于看完了一本教你用Python学习编程基础的书。你已经掌握了列表、字典、类,也许甚至还有面向对象的概念。

    那么……接下来呢?

    Python是一门非常全面的编程语言,在各个不同领域都有着繁多的应用。如果你已经掌握了Python的基础并且恨不得马上用这门语言做点东西,那现在就是找出下一步应该做什么的时候了。

    在本文中,我们提供了若干不同的项目、资源以及教程,你可以利用这些来开始做东西。

    别人用Python做了什么

    你可能会在想,在现实世界里别人都用Python开发了什么东西呢。那么首先我们先迅速看一下其中一些大的技术公司是怎么使用这门语言的。

    Google这家公司从一开始就使用Python了,而且在这家技术巨头的主要服务器端语言阵营中赢得了一席之地。Python的仁慈的独裁者Guido van Rossum甚至还在那里待过几年,负责监管这门语言的开发工作。

    Instagram喜欢Python是因为它的简洁。这项服务以运行着“全世界最大的Django web框架部署”著称。而Django完全是用Python写出来的。

    Spotify将这么语言用到数据分析和后端服务上。据他们的团队说,Python的易用让他们拥有了一条超快的开发渠道。Spotify要进行海量分析来给用户提供推荐,所以他们需要一个简单又好用的东西。Python正好是救兵!

    你还可以看看这篇文章去了解其他公司都用Python干什么。如果你已经被说服的话,我们就开始吧!

    你可以用Python做什么

    从web开发到数据科学、机器学习等等,Python在现实世界中的应用是无限的。以下一些项目将会辅助你最终将你的Python技能用到正道上。

    #1:将乏味的事情自动化

    这是一本“针对全新初学者实用编程”的资源。就像标题所述,这本书教你如何将乏味的任务自动化,比如更新电子表格或者重命名计算机的文件。这是想要掌握Python基础的任何人的完美起点。

    你将有机会联系自己到目前为止学到过的东西,去创建字典、抓取web,折腾文件,并且创建对象和类。你在这本书遇到的上手应用会为你听过现实世界中的结果,你可以马上就看到。

    这一资源有不同的格式,可保证最好的学习体验。你可以到Amazon上面去买实体书或者免费在网上阅读。

    #2:随时跟踪比特币价格

    这段时间似乎人人都在讲比特币。自从2017年12月价格达到将近20000美元的高点后,加密数字货币已经进入到数百万人的脑海里。它的价格在不断波动,但是很多人都认为这是一笔值得的投资。

    如果你正在寻求靠这波虚拟淘金热赚上一笔,想知道什么时候该出手,那就得随时了解比特币的价格。这门教程可以教你如何利用Python技能开发出一项比特币价格通知服务。

    这一项目的基础是IFTTT小程序的创建。你讲学会如何利用请求库来发送HTTP请求以及如何利用webhook将你的app与外部服务连接。

    这是对加密数字货币感兴趣的Python初学者完美的初始项目。你用这一教程开发的这项服务可以延伸到其他的货币,所以别担心,以太坊也能用上。

    #3:创建一个计算器

    这个简单的项目是进入GUI编程的一个可靠的办法。开发后端服务是部署的重要部分之一,但是可能也需要考虑前端的事情。创建用户可轻松与之交互的应用就显得无比重要。

    如果你对UX和UI感兴趣,那就看看这门教程。从中你会接触tkinter 模块,这是标准的图形化用户界面软件包,通常是跟Python捆绑在一起的。

    tkinter 模块是对Tcl/Tk进行封装的wrapper,是Tcl脚本语言与Tk GUI框架扩展的结合。如果你已经安装了Python,那你就应该已经有tkinter框架可用了。一个简单的调用即可唤出:

    frim tkinter import

    一旦你完成了这一步设置,就可以用Python继续开发你的第一个GUI计算器了。

    练习运用tkinter模块,看着你的愿景慢慢在屏幕上实现。然后,一旦你练过手了,就可以拓展学习Python其他的GUI工具包了。更多信息可以看看Python GUI编程的官方文档。

    #4:挖掘Twitter数据

    感谢互联网以及逐步壮大的物联网,我们现在能访问的数据量之大甚至在10年前都是无法想象的。分析是任何跟数据打交道的领域的很大一部分。大家都在讨论什么?我们从他们的行为中能看到什么模式?

    Twitter是获得其中一些问题答案的好地方。如果你对数据分析感兴趣,则Twitter数据挖掘项目就是利用你的Python技能回答有关周围世界的问题的好办法。

    我们的Twitter情绪分析教程将用一个docker环境教你如何挖掘Twitter数据并且分析用户情绪。你将学会如何用Twitter注册一个应用,只有这样你才能访问他们的streaming API。

    你会看到如何利用Tweepy来过滤想要抓取的推特,用TextBlob来计算哪些推特的情绪,用Elasticsearch来分析他们的内容,以及用Kibana来对结果进行可视化。当你完成这门教程后,你应该就可以深入学习其他利用Python来进行文字处理和语音识别的项目了。

    #5:用Flask建立一个微博客

    似乎现在人人都有一个博客,但是给自己在网上设立一个中心枢纽不算什么糟糕想法。随着Twitter和Instagram的出现,微博客尤其流行起来。在Miguel Grinberg搞的这个项目里,你会学习到如何搭建自己的微博客。

    这门教程叫做“Flask Mega指南”,内容可以说不负其名。整篇教程分为23章,学习完之后你可以对Flask微型web框架拥有深刻了解。到项目最后,你应该就能得到一个功能完整的web应用了。

    你不需要了解有关Flask的一切就可以开始,所以对于那些恨不得马上动手尝试web开发的人来说这是非常好的。

    这个教程最近还更新了,把有助于你成为更好的web开发者的内容也纳入进来了。你可以在网上免费阅读,或者到Amazon去买一本纸质版,或者在他的在线课程中让作者手把手教你。一旦你做完项目,你就可以继续学Django,甚至开始创建更大规模的web应用了。

    #6:建立一个区块链

    尽管区块链起初开发出来是作为金融技术使用的,但现在却蔓延到了其他的各个行业。区块链几乎可以用到任何交易上面:从房地产到病历转移等等。

    如果自己做一个的话牛就会对它的机制有更好的了解。Hackernoon的教程将辅助你从零开始实现一个区块链。到项目最后,你会对这一交易技术的机制拥有深入的了解。

    做区块链需要跟HTTP和request库打交道。一旦你安装了Flaskweb框架,你就可以通过互联网用HTTP请求跟你的区块链进行通信了。

    记住,区块链不仅仅适用于加密狂热者。一旦你自己开发了一个区块链之后,可以看看能不能找到有创意的手段在你感兴趣的领域实现这门技术。

    #7:Twitter Feed控制

    对开发web应用感兴趣但是对开始一个大型项目没有信心?别担心——我们有东西给你。跟着我们一起学习如何在几个小时内创建一个简单的web app。

    Bob Belderbos分享了自己是如何实现第40届PyBites Code Challenge 的,在这项编程挑战中,参与者需要创建一个web应用来更好地在Twitter上控制每日Python提示的新闻流。你可以通读他的实现以及代码了解究竟。

    这次你用的不是Flask,而是微型web框架Bottle。Bottle以迅速部署应用的低依赖度解决方案著称。既然它是轻量且易用的,所以你很快就能搭建好你的应用。

    你还会用Tweepy模块加载Twitter API的数据。你会将数据保存到 SQLAlchemy 数据库里面,所以你还会练习到SQL查询的编写。Fork这个代码库就可以开始了!

    #8:玩PyGames

    这个是给喜欢乐子的人准备的!Python可用于对各种电玩游戏、冒险游戏以及益智游戏进行编码,你可以在数天之内完成部署。经典的游戏包括猜单词、一字棋、乒乓球等等,这些都可以用你刚学会的编程技能去做。

    Pygame库使得自己开发游戏变得更加容易。它包含了开发游戏所需的几乎一切。

    Pygame既是免费的也是开源的。里面包含有计算机图形库和声音库,你可以利用这些可以来给你的应用增加互动功能。

    你可以用这个库来开发很多的游戏。不管你选择要做哪一个,请随意把你的东西Pygame社区!

    #9:选择你的冒险之旅

    如果你更喜欢讲故事,用Python仍然可以开发出很酷的东西来。

    这门语言极其容易编写,是创作交互式小说的完美环境。这个免费资源会指导你如何用Python编写一个文本型的冒险游戏的过程。

    教程需要掌握一些Python编程的基本知识,但是它能够帮助你弥补自己所了解的知识与如何运用这一知识到应用开发上之间的鸿沟。

    如果你希望将你的故事提升到新的水平,可以用类似Ren’Py这样的软件引擎添加声音和图像到你的游戏里面,创作出成熟的可视化小说。(然后你可以把它放到Steam上看看大家的反应!获得对自己作品反馈的最好方式是把它发布到世界上)

    #10:对机器学习说“Hell World!”

    对于对人工智能感兴趣的任何人来说,机器学习是理解的关键领域。然而,想要开始学习机器是很吓人的,而且这个领域发展很快,总是在变。

    幸运的时候,网上有很多资源可以帮助你试水一下再投入到数据科学的海洋之中。Jason Brownlee的这门教程是关于用Python处理机器学习非常精彩的介绍。

    从中你将了解到其中一些最常见的机器学习算法,以及可以辅助你做出预测的Python库。

    这门教程极其简单而且非常容易学。你可以在几个小时之内完成学习。等你学完之后,就会对如何利用Python进行数据科学工作有了迅速的了解。

    如果你确认自己已经准备好进一步深入学习了,可以看看我们的海量数据科学教程,在这里你可以学习如何分析指纹、如何建立可视化,以及如何识别语音和面部,这一切都是用Python来做的。

    #11:接受挑战

    如果你不确定要冒险尝试上述的一些较大型的项目,而小一点的你又不感兴趣的话,那你可能就会想还有其他可以练手的吗?怎么才能找到令你兴奋的东西呢?

    编码挑战可以帮助你联系你的Python技能并且对你可以用Python做到的所有不同事情有初步了解。

    简而言之:给你一个问题,你必须用Python找到一个解决方案。

    你有机会开发对你有意义的问题的实现,但你也有机会通过提示来深入探究Python语言。这些会告诉你应该导入哪些模块来帮助你解决挑战。

    编码挑战是以广度优先的方式尽可能多地学习库、方法、以及框架的好办法。在这里保证你可以找到想要进一步探索的东西。你可能甚至还会回到这份清单里面,并且发现你用来解决其中一个挑战的东西已经激起了你新的兴趣!

    以下的挑战你可以试试:

    The Python Challenge有20个多个关卡可供挑战。创建小规模的Python脚本来找到相应关卡的解决方案。互联网上到处都有相关解决方案的提示,不过最好还是自己找到解决办法!

    PyBites Code Challenges的挑战也有50多个!这些挑战鼓励你通过开发应用完成任务来掌握Python。

    如果你打算自己搞定这些挑战而不是按照教程步骤去编码的话,那么找一份可以随时求助的资源总是好的。当你在解决这些挑战时,Python Tricks这本书是非常出色的案头信息源。它会带领你探索Python不那么知名的地方,而那些地方正是你解决问题所需要的。

    Python可能不应该干的事情

    显然Python是非常全能的语言,你可以用它来做很多事情。但你没法用它来做完所有事情。实际上,有些东西Python就不是很擅长。

    作为一门解释性语言,Python跟设备驱动程序这样的底层设备打交道会比较麻烦。比方说,如果你只想用Python来写一个操作系统的话会遇到问题。底层应用最好还是坚持用C或者C++来写。

    然而,甚至这一断言恐怕也持续不了多久。作为对Python灵活性的证明,有人正在致力于扩展Python在底层交互中的可用性的项目。MicroPython只是其中之一,其目标就是为Python提供底层能力。

    如果我想做的东西没有出现在这份清单里面怎么办?

    没关系!这份东西也不是面面俱到的——用Python你可以开发无数我们没有覆盖到的工具和应用。不要把你自己局限在这份清单里面。这只是一份资源,让你有个地方可以开始。

    这个视频可以告诉你Python还适合哪些其他项目。你还可以看看这篇博客文章,了解去哪里寻找更多的Python项目灵感。

    最后,该你来做一下调查找到能调动自己兴趣的项目了。如果你不确定从何开始,那就关注我们的Twitter账号吧。我们会定期分享来自读者社区的很酷很有趣的项目。你可能会从中找到自己迫不及待想要做出贡献的一个。

    接下来呢?

    好了,这就是你从Python初学者发展成娴熟的Pythonista的11条道路。

    不管你选择从何开始,必定会找到无数发展编程技能的光明大道。随便选一个然后开始就是了!你的项目想法没有出现在这份清单里面?可以在评论区写出来!提出你的完美项目建议。

    展开全文
  • 文件与目录操作是编程语言中非常重要的功能,Python也对其提供了相应的API支持,这篇博文就是具体介绍它们的使用方法。 一、文件打开和关闭操作 对文件进行操作在Python中分为3个步骤,首先要打开文件,然后是对文件...

    文件与目录操作是编程语言中非常重要的功能,Python也对其提供了相应的API支持,这篇博文就是具体介绍它们的使用方法。

    一、文件打开和关闭操作

    对文件进行操作在Python中分为3个步骤,首先要打开文件,然后是对文件进行读写操作,最后需要关闭文件。

    1、打开文件使用的是open()函数,它提供初始化输入、输出(I/O)操作的通用接口,成功打开文件后返回一个文件对象,打开失败则引发一个错误。打开文件的语法如下:

    file_object = open(file_name,access_mode [,buffering] )

    file_name是要打开的文件名,可以是文件的绝对路径或相对路径。绝对路径是文件在硬盘上真正存在的路径,如:c:\python\src是绝对路径。相对路径是相对于当前运行程序所在路径的目标文件位置,表示相对路径时,“.”表示当前位置;“..”表示当前位置的上一级。如“..\images”或“.\DB”是相对路径,使用相对路径的好处是,当程序迁移时,由于绝对路径与本地计算机关联紧密,程序运行可能会出错,所以通常使用相对路径。

    access_mode表示文件打开的模式,常用的模式如下:

    在Python中对文件和目录进行操作

    r表示的是对文件进行读取操作,w表示写入数据到文件中,a是追加数据到文件的末尾,b是标识文件为二进制文件,与rwa组合使用,如打开音视频等二进制文件需要使用b模式,不指定模式时默认是r模式。

    buffering表示访问文件采用的缓冲方式。0表示不缓冲,1表示只缓冲1行,任何大于1的值表示按给定值作为缓冲大小,不提供该参数或给定负值表示使用系统默认缓冲机制。

    (2)对文件进行读写等操作后需要关闭文件,目的是释放文件占用的资源,使用的是file.close()方法,file表示的是已打开的文件对象。如果不显式的关闭文件,Python的垃圾收集机制也会在文件对象的引用计数为0时自动关闭文件,但是可能会丢失输出缓冲区的数据。如果不及时关闭已经打开的文件,该文件的资源会被占用,将无法对该文件执行其他操作,如删除文件的操作。所以要养成良好的习惯,在完成文件操作后,要及时关闭文件,释放资源。

    (3)打开和关闭文件的示例代码如下:

    fp = open('e:/readme.txt','w')       #绝对路径写文件
    fp.close()           #关闭文件
    
    fp = open('./readme.txt','r')          #相对路径,读文件
    fp.close()

    第一个是使用绝对路径,“w”表示对文件进行读写操作,如果文件不存在则会创建一个空文件。第二个是使用相对路径,在当前Python文件的目录下查找,“r”表示读取,如果找不到则会出错,找到则会读取文件。

    (4)常用的文件对象内建方法

    文件对象的操作方法有很对,常用的方法总结如下:
    在Python中对文件和目录进行操作

    (5)目录操作

    1)可以使用getcwd()函数获取当前路径。

    #代码如下:
    import os
    print os.getcwd()
    #执行结果如下:
    C:\Users\Administrator\Desktop          #因为我Python的程序在桌面,所以显示的是这个路径

    2)使用listdir(path)可以获得目录下面的所有文件的目录列表。

    #代码如下:
    import os
    print os.listdir(os.getcwd())
    #执行结果如下:
    ['aa.py', 'APP', 'desktop.ini', 'files']

    3)创建新的目录可以使用mkdir(path)函数。

    #代码如下:
    import os
    print os.mkdir('test')
    #执行结果就是在当前路径下新建了一个目录,也可以指定全路径进行创建

    删除目录时,只要将mkdir换成rmdir即可。

    4)判断目录是否存在使用path.isdir(path)。

    #代码如下
    import os
    print os.path.isdir('test')
    #执行后,如果目录存在,则返回True,若不存在,则返回False。

    判断是否是文件可以使用path.isfile(path)。

    #代码如下
    import os
    print os.path.isfile('test')

    ———————— 本文至此结束,感谢阅读 ————————

    展开全文
  • 最重要的是,我们检查各种可疑值,其中包括高熵,已知的漏洞,入口点地址,段,标头,数据等异常。 通过调用yara-python库(如果已安装)来包括对yara规则的支持 我们支持多种输出格式,并使输出结果高度可配置: ...
  • 文件与目录操作是编程语言中非常重要的功能,Python也对其提供了相应的API支持,这篇博文就是具体介绍它们的使用方法。 一、文件打开和关闭操作 对文件进行操作在Python中分为3个步骤,首先要打开文件,然后是对文件...

    文件与目录操作是编程语言中非常重要的功能,Python也对其提供了相应的API支持,这篇博文就是具体介绍它们的使用方法。

    一、文件打开和关闭操作
    对文件进行操作在Python中分为3个步骤,首先要打开文件,然后是对文件进行读写操作,最后需要关闭文件。

    1、打开文件使用的是open()函数,它提供初始化输入、输出(I/O)操作的通用接口,成功打开文件后返回一个文件对象,打开失败则引发一个错误。打开文件的语法如下:

    file_object = open(file_name,access_mode [,buffering] )
    

    file_name是要打开的文件名,可以是文件的绝对路径或相对路径。绝对路径是文件在硬盘上真正存在的路径,如:c:\python\src是绝对路径。相对路径是相对于当前运行程序所在路径的目标文件位置,表示相对路径时,“.”表示当前位置;“…”表示当前位置的上一级。如“…\images”或“.\DB”是相对路径,使用相对路径的好处是,当程序迁移时,由于绝对路径与本地计算机关联紧密,程序运行可能会出错,所以通常使用相对路径。

    access_mode表示文件打开的模式,常用的模式如下:
    在这里插入图片描述
    r表示的是对文件进行读取操作,w表示写入数据到文件中,a是追加数据到文件的末尾,b是标识文件为二进制文件,与rwa组合使用,如打开音视频等二进制文件需要使用b模式,不指定模式时默认是r模式。

    buffering表示访问文件采用的缓冲方式。0表示不缓冲,1表示只缓冲1行,任何大于1的值表示按给定值作为缓冲大小,不提供该参数或给定负值表示使用系统默认缓冲机制。

    (2)对文件进行读写等操作后需要关闭文件,目的是释放文件占用的资源,使用的是file.close()方法,file表示的是已打开的文件对象。如果不显式的关闭文件,Python的垃圾收集机制也会在文件对象的引用计数为0时自动关闭文件,但是可能会丢失输出缓冲区的数据。如果不及时关闭已经打开的文件,该文件的资源会被占用,将无法对该文件执行其他操作,如删除文件的操作。所以要养成良好的习惯,在完成文件操作后,要及时关闭文件,释放资源。

    (3)打开和关闭文件的示例代码如下:

    fp = open('e:/readme.txt','w')       #绝对路径写文件
    fp.close()           #关闭文件
    
    fp = open('./readme.txt','r')          #相对路径,读文件
    fp.close()
    

    第一个是使用绝对路径,“w”表示对文件进行读写操作,如果文件不存在则会创建一个空文件。第二个是使用相对路径,在当前Python文件的目录下查找,“r”表示读取,如果找不到则会出错,找到则会读取文件。

    (4)常用的文件对象内建方法

    文件对象的操作方法有很对,常用的方法总结如下:
    在这里插入图片描述
    (5)目录操作

    1)可以使用getcwd()函数获取当前路径。

    #代码如下:
    import os
    print os.getcwd()
    #执行结果如下:
    C:\Users\Administrator\Desktop          #因为我Python的程序在桌面,所以显示的是这个路径
    

    2)使用listdir(path)可以获得目录下面的所有文件的目录列表。

    #代码如下:
    import os
    print os.listdir(os.getcwd())
    #执行结果如下:
    ['aa.py', 'APP', 'desktop.ini', 'files']
    

    3)创建新的目录可以使用mkdir(path)函数。

    #代码如下:
    import os
    print os.mkdir('test')
    #执行结果就是在当前路径下新建了一个目录,也可以指定全路径进行创建
    

    删除目录时,只要将mkdir换成rmdir即可。
    4)判断目录是否存在使用path.isdir(path)。

    #代码如下
    import os
    print os.path.isdir('test')
    #执行后,如果目录存在,则返回True,若不存在,则返回False。
    

    判断是否是文件可以使用path.isfile(path)。

    #代码如下
    import os
    print os.path.isfile('test')
    
    展开全文
  • 在之前做爬虫的时候一直没有系统的...在open()方法中最重要的两个参数 file (文件名) mode(模式) open()方法的功能 :用于打开一个文件,并返回对象,在使用这个方法后,一定要关闭文件的对象(IO操作一般都是有
  • Python中的logging模块

    2016-10-09 17:16:52
    特别是Python这样动态语言,很多错误都只能在运行时候才能发现,一个好日志系统对于Python程序相当重要简单解决方案当然是直接使用print输出运行信息。但是这样太简单了,没有分级功能,如果在发布...
    如果使用Python写一个比较大型的程序,你一定会用上日志系统。特别是Python这样的动态语言,很多错误都只能在运行的时候才能发现,一个好的日志系统对于Python程序相当重要。最简单的解决方案当然是直接使用print输出运行信息。但是这样太简单了,没有分级功能,如果在发布的时候想去掉调试用的运行信息还得找出所有的print语句进行修改。再者,print只能输出到控制台,想要输出到文件或者通过电子邮件发送到其他地方,一个print语句就没办法解决了。
    

    通过使用Python的日志系统,就可以解决以上问题。
    首先看一下这个示例:
    import logging
    LOG=logging.getLogger(’应用程序名’)
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    LOG.addHandler(console)
    LOG.debug(’调试信息’)
    LOG.info(’有用的信息’)
    LOG.warning(’警告信息’)
    LOG.error(’错误信息’)
    LOG.critical(’严重错误信息’)
    上面的代码想控制台输出了五种错误信息。分为五个从低到高的级别,从DEBUG到CRITICAL。此外,我们还指定了程序输出的级别,只有INFO级别以上的信息才会被输出。
    这就是日志系统最常用的使用方法。这段代码中有两个概念可以帮助我们更进一步使用Python的日志系统:
    1.        “Logger”。每个程序在输出信息之前都要获得一个Logger。Logger通常对应了程序的模块名,比如聊天工具的图形界面模块可以这样获得它的Logger:
    LOG=logging.getLogger(”chat.gui”)
    而核心模块可以这样:
    LOG=logging.getLogger(”chat.kernel”)
    我们接下来可以看到使用这种命名方法的用途。
    2.        “Handler”。用于处理程序的输出。Python的日志系统有多种Handler可以使用。有些Handler可以把信息输出到控制台,有些Logger可以把信息输出到文件,还有些Handler可以把信息发送到网络上。如果觉得不够用,还可以编写自己的Handler。
    所有的Handler可以支持三个操作:
    1.      设置输出格式。比如设置输出的信息中包含时间和级别信息:
    LOG=logging.getLogger(”chat.gui”)
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter(’%(asctime)s %(levelname)s %(message)s’)
    console.setFormatter(formatter)
    LOG.addHandler(console)
    熟悉Python的朋友应该会发现,logging.Formatter的参数实际上只是Python常用的“%”字符串格式化。它使用“%(name)s”表示占位符。下面是一个完整的表格,展示了日志系统可以输出的各种信息:

    %(name)s

    Logger的名字

    %(levelno)s

    数字形式的日志级别

    %(levelname)s

    文本形式的日志级别

    %(pathname)s

    调用日志输出函数的模块的完整路径名,可能没有

    %(filename)s

    调用日志输出函数的模块的文件名

    %(module)s

    调用日志输出函数的模块名

    %(funcName)s

    调用日志输出函数的函数名

    %(lineno)d

    调用日志输出函数的语句所在的代码行

    %(created)f

    当前时间,用UNIX标准的表示时间的浮点数表示

    %(relativeCreated)d

    输出日志信息时的,自Logger创建以来的毫秒数

    %(asctime)s

    字符串形式的当前时间。默认格式是“2003-07-08 16:49:45,896”。逗号后面的是毫秒

    %(thread)d

    线程ID。可能没有

    %(threadName)s

    线程名。可能没有

    %(process)d

    进程ID。可能没有

    %(message)s

    用户输出的消息

    2.      设置输出级别
    在上面我们已经演示了如何设置输出级别了。除了Python内置的五种级别,我们还可以自定义输出级别。
    TODO 子定义输出级别
    3.      设置过滤器
    细心的朋友一定会发现前文调用logging.getLogger()时参数的格式类似于“A.B.C”。采取这样的格式其实就是为了可以配置过滤器。看一下这段代码:
    LOG=logging.getLogger(”chat.gui.statistic”)
    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter(’%(asctime)s %(levelname)s %(message)s’)
    console.setFormatter(formatter)
    filter=logging.Filter(”chat.gui”)
    console.addFilter(filter)
    LOG.addHandler(console)
    和前面不同的是我们在Handler上添加了一个过滤器。现在我们输出日志信息的时候就会经过过滤器的处理。名为“A.B”的过滤器只让名字带有“A.B”前缀的Logger输出信息。可以添加多个过滤器,只要有一个过滤器拒绝,日志信息就不会被输出。另外,在Logger中也可以添加过滤器。
    每个Logger可以附加多个Handler。接下来我们就来介绍一些常用的Handler:
    1)        logging.StreamHandler
    使用这个Handler可以向类似与sys.stdout或者sys.stderr的任何文件对象(file object)输出信息。它的构造函数是:
    StreamHandler([strm])
    其中strm参数是一个文件对象。默认是sys.stderr
    2)    2.logging.FileHandler
    和StreamHandler类似,用于向一个文件输出日志信息。不过FileHandler会帮你打开这个文件。它的构造函数是:
    FileHandler(filename[,mode])
    filename是文件名,必须指定一个文件名。
    mode是文件的打开方式。参见Python内置函数open()的用法。默认是’a’,即添加到文件末尾。
    3)    3.logging.handlers.RotatingFileHandler
    这个Handler类似于上面的FileHandler,但是它可以管理文件大小。当文件达到一定大小之后,它会自动将当前日志文件改名,然后创建一个新的同名日志文件继续输出。比如日志文件是chat.log。当chat.log达到指定的大小之后,RotatingFileHandler自动把文件改名为chat.log.1。不过,如果chat.log.1已经存在,会先把chat.log.1重命名为chat.log.2。。。最后重新创建chat.log,继续输出日志信息。它的构造函数是:
    RotatingFileHandler( filename[, mode[, maxBytes[, backupCount]]])
    其中filename和mode两个参数和FileHandler一样。
    maxBytes用于指定日志文件的最大文件大小。如果maxBytes为0,意味着日志文件可以无限大,这时上面描述的重命名过程就不会发生。
    backupCount用于指定保留的备份文件的个数。比如,如果指定为2,当上面描述的重命名过程发生时,原有的chat.log.2并不会被更名,而是被删除。
    4)    4.logging.handlers.TimedRotatingFileHandler
    这个Handler和RotatingFileHandler类似,不过,它没有通过判断文件大小来决定何时重新创建日志文件,而是间隔一定时间就自动创建新的日志文件。重命名的过程与RotatingFileHandler类似,不过新的文件不是附加数字,而是当前时间。它的构造函数是:
    TimedRotatingFileHandler( filename [,when [,interval [,backupCount]]])
    其中filename参数和backupCount参数和RotatingFileHandler具有相同的意义。
    interval是时间间隔。
    when参数是一个字符串。表示时间间隔的单位,不区分大小写。它有以下取值:
    S 秒
    M 分
    H 小时
    D 天
    W 每星期(interval==0时代表星期一)
    midnight 每天凌晨
    5)    5.logging.handlers.SocketHandler
    6)    […]

    6:00 PM | Read comments (1) | Permalink | python

    python 日志打印[zz]

    python 日志打印

    发现python里面扩展了日志打印功能。感觉比Java自带的还好,和log4j很类似。
    下面总结下其用法。先说一种不用配置文件的:
    <log.py>

    1# -*- coding: gb2312 -*-
    2import logging
    3
    4logging.basicConfig(level=logging.INFO,
    5                    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
    6                    datefmt='%m-%d %H:%M',
    7                    filename='./AutoUpdate.log',
    8                    filemode='w')
    9
    10console = logging.StreamHandler()
    11console.setLevel(logging.INFO)
    12formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
    13console.setFormatter(formatter)
    14logging.getLogger('').addHandler(console)
    15
    16
    17## 
    18# console = logging.StreamHandler()
    19# console = setLevel(logging.DEBUG)
    20# formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
    21# console.setFormatter(formatter)
    22# logging.getLogger('').addHandler(console)
    23
    24
    25def getLogging(name):
    26 return logging.getLogger(name)

    <test.py>

    import log

    testlog = log.getLogging('test')
    testlog.error( "~~~~~~~~~~~~~~test1.")
    testlog.info( "~~~~~~~~~~~~~~test2." )
    testlog.exception( "~~~~~~~~~~~~~~~~~~~~~~~~~test3.")

    用过log4j的人不会陌生这种用法。如果你对log4j有疑惑,或者想了解请在本人blog内查找关于log4j的文章。有详细介绍。这里不再赘述。
    第二种使用配置文件的:

    # logging.conf

    [loggers]
    keys=root,example

    [handlers]
    keys=consoleHandler,rotateFileHandler

    [formatters]
    keys=simpleFormatter

    [formatter_simpleFormatter]
    format=[%(asctime)s](%(levelname)s)%(name)s : %(message)s

    [logger_root]
    level=DEBUG
    handlers=consoleHandler,rotateFileHandler

    [logger_example]
    level=DEBUG
    handlers=consoleHandler,rotateFileHandler
    qualname=example
    propagate=0

    [handler_consoleHandler]
    class=StreamHandler
    level=DEBUG
    formatter=simpleFormatter
    args=(sys.stdout,)

    [handler_rotateFileHandler]
    class=handlers.RotatingFileHandler
    level=DEBUG
    formatter=simpleFormatter
    args=('test.log', 'a', 10000, 9)

    <test2.py>

    import logging
    import logging.config

    logging.config.fileConfig("logger.conf")

    #create logger
    logger = logging.getLogger("example")

    #"application" code
    logger.debug("debug message")
    logger.info("info message")
    logger.warn("warn message")
    logger.error("error message")
    logger.critical("critical message")

    logHello = logging.getLogger("hello")
    logHello.info("Hello world!")

    其中值得注意的是args的含义。

    5:59 PM | Read comments (3) | Permalink | python

    使用Python的logging.config

    使用Python的logging.config
    Python的logging模块接口仿log4j,概念上一致,使用上相当方便。
    利用logging.config.fileConfig(),可以将日志的配置用文件来描述,简化了日志的初始化。
    例程:

    # test.py
    import logging
    import logging.config
    logging.config.fileConfig("logging.conf")
    #create logger
    logger = logging.getLogger("example")
    #"application" code
    logger.debug("debug message")
    logger.info("info message")
    logger.warn("warn message")
    logger.error("error message")
    logger.critical("critical message")
    logHello = logging.getLogger("hello")
    logHello.info("Hello world!")

    配置文件示例如下:

    # logging.conf
    [loggers]
    keys=root,example
    [handlers]
    keys=consoleHandler,rotateFileHandler
    [formatters]
    keys=simpleFormatter
    [formatter_simpleFormatter]
    format=[%(asctime)s](%(levelname)s)%(name)s : %(message)s
    [logger_root]
    level=DEBUG
    handlers=consoleHandler,rotateFileHandler
    [logger_example]
    level=DEBUG
    handlers=consoleHandler,rotateFileHandler
    qualname=example
    propagate=0
    [handler_consoleHandler]
    class=StreamHandler
    level=DEBUG
    formatter=simpleFormatter
    args=(sys.stdout,)
    [handler_rotateFileHandler]
    class=handlers.RotatingFileHandler
    level=DEBUG
    formatter=simpleFormatter
    args=('test.log', 'a', 200000, 9)

    注意,RotatingFileHandler中doRollover()会因为rename()出错而中途退出,造成日志文件没有打开,并且后继的日志消息都因为日志文件没有打开而失败。可以自己在rename()处加上try,或者不用RotatingFileHandler。估计隔一段时间就fileConfig()一次也是可以恢复正常。
    详见:Python logging RotatingFileHandler bug
    该错误仅当日志文件满时切换文件时才可能发生,当文件被锁定时才会出错。正常使用不会有问题,并且日志出错不会影响主程序的运行。所以可以放心使用,想再可靠点就直接在源码中加个try.
    (转载请注明来源于金庆的专栏)

    展开全文
  • Python项目文件的方式记录日志,包括我们熟悉的操作数据库,向数据库里插入一条数据,其实也是向文件内写了一行数据,我们看到视频,上网浏览的网页,都是对文件或者流的操作,这么重要的功能,一起好好学习一下...
  • Python实现PDF文件合并

    2020-09-10 11:48:52
    PDF是我们目前办公处理一种重要文件格式,目前商用PDF浏览器一般对合并PDF功能有权限限制,下面介绍利用Python实现多个PDF合并方法,以实现更高效便捷PDF文件合并需求。 实现步骤分成三步: 准备好文件,...
  • Python中的Kerberos操作库。 警告 从0.1.X到0.2.X及更高版本,库进行了相当大重组。 这些更改很可能会100%破坏您现有代码,因此请根据您要求修复版本或更新脚本。 很抱歉给您带来不便,但是我认为为使API...
  • 即,它实现了形状签名,功能图优化,细化技术,并且最重要的是,它具有用于计算地图的易于使用的界面。 特征 TriMesh类允许计算面积,测地距离(使用),法线,基于LBO的投影,导出带有纹理的.off或.obj文件。 使用...
  • statement.py处理游戏的大部分后台过程,例如检查用户是否获胜,检查他们的猜测是正确还是不正确,最重要的是,使用用户的猜测字母列表来更新其自己的hidden_​​phrase属性,该属性是用户在游戏开始时看到的空
  • 该脚本包含重要的功能,可帮助减少人员工作量,也可帮助初学者入门python。 在中查看文件时,代码文档正确对齐。 Jarvis被用作Google助手。 主 传递当前扩展名和新扩展名后,此批处理将重命名给定目录的一组文件...
  • 尽管我们提供了更好的文档,测试和功能,但最重要的是,我们想用真实的数据和模型对这个库进行测试。 这将极大地帮助我们发现棘手的错误,添加更多的内置类型或更改库API以使其更易于使用。 最简单,最有用的贡献...
  • Python:二进制文件读写

    千次阅读 2015-04-13 13:17:41
    欢迎使用Markdown编辑器写博客要求打开一个文件,按照二进制读入数据。...struct模块中最重要的三个函数是pack、unpack和calcsize。 pack(fmt,v1,v2,…)按照给定的格式,把数据封装成字符串 unpack(fmt
  • 重新编码 reui ui由提供支持,因此更加简洁。 它包括ui,chams和glow色彩自定义,以及一种更好写入和...确保至少将和pip添加到PATH并与作弊文件位于同一目录 如果您遇到问题,请尝试更新点子 pip install -r requir
  • Tsai笔记:Python学习随性...在Python入门,很多人都要自己写简单的脚本方便实现机械式的工作,最后最重要的就是将写好的脚本全部打包成一个.exe可执行文件。这里我使用的是PyInstaller进行封装。(查找过许多方...
  • Python制作小软件——4. 利用PyInstaller打包成exe文件

    万次阅读 多人点赞 2018-08-07 18:39:20
    利用PyQt5实现界面中的功能,介绍完了Python中如何呼唤出我们的界面后 最后最重要的就是将我们做好的东西,全部打包成一个.exe可执行文件。这里我们使用的是PyInstaller进行封装。(查找过许多方法,但是最后...
  • 我对“用Python自动完成无聊事情”提出问题解决方案 经过一堆自我指导项目之后,我认为是时候开始阅读有关python编码重要组件书了。 这是由于我过分热心地尝试进行多个我无法处理项目而引起。 该...
  • :warning: root_pandas已弃用且未维护 :warning: root_pandas建立在root_numpy ,而root_numpy来。 这主要是由于出现了更快,更... 最重要的是, root_pandas提供了一些功能,这些功能超出了pandas使用read_hdf和to
  • IT审计有一个最多的执行步骤就是取证。最近的项目过程,有需要验证ftp服务机密性的需要,就写了一个ftp访问并下载文件的...3、也是最重要的,在上述条件下,此举基于可渗透时间、现行部署条件、应对防御未来直接...
  • 了解何时使用面向对象的功能,更重要的是何时不使用它们 了解常见设计问题的可靠解决方案 探索构成软件设计基础的设计原则,例如松耦合,Hollywood原则和Open Close原则,等等。 使用结构设计模式,找出对象和类...
  • PoleUtil.py:几个有用的日常生活功能,其中最重要的是convert_and_format,它使用本地化来转换字符串,数字,日期和布尔值。 PoleLog.py:仅用于在终端进行日志记录和调试的功能,用于登录正在进行文件的...
  • Python 2.5

    2007-05-28 12:33:42
    一个比较流行的办法是在Python中原型一个程序,直到你相信设计是正确的再换到C++,一个更好的办法是将Python应用程序轮廓化,然后在C++重写速度至关重要的部分。 <br/> <br/>一个调试工具 <br/>新...
  • 日志记录实际上是每个应用程序都...借助 Elasticsearch 筛选大量数据的效率,应用程序开发人员可以快速缩小最重要的日志的范围。仪表板可发送给运营团队,使他们能够在检测到异常行为时迅速做出反应。 本文将重点介
  • 本文来自csdn,本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的Python工具包,并介绍用于读取图像、...PIL中最重要的模块为Image。要读取一幅图像,可以使用: 上述代码的返回值pil_im是一个PI
  • 帮助您准备数据,训练和保存模型,处理不平衡问题,绘制决策余量,将树保存到文件中,为您提供功能重要性和最重要的标签。 验证精度,召回率,ROC和F-measure等 现在仅适用于分类,以后会更新 文件介绍 如果要训练或...
  • 学习对 Oracle 用户最重要的 Python 功能。 2006 年 3 月发布PL/SQL 比较适合于 Oracle 数据库的编程任务。而大多数 Oracle专业人员并不会局限于完全在数据库进行工作。您可能曾经遇到过许多不便于使用...
  • 和元组的依赖项列表,这些元组显示模块之间如何链接,这似乎是最重要的模块。 单独的 draw_graph 函数采用 pyCustoms 结果并使用 graphviz 生成具有某些引擎、布局选项等选择的视觉表示。 网络视图最初很有趣,因为...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 173
精华内容 69
关键字:

python中文件最重要的功能

python 订阅