python
文章平均质量分 70
dongyu1703
这个作者很懒,什么都没留下…
展开
-
python抛出异常
当 Python 试图执行无效代码时,就会抛出异常。在第 3 章中,你已看到如何使用 try 和 except 语句来处理 Python 的异常,这样程序就可以从你预期的异常中恢复。但你也可以在代码中抛出自己的异常。抛出异常相当于是说:“停止运行这个函数中的代码,将程序执行转到 except 语句 ”。抛出异常使用 raise 语句。在代码中,raise 语句包含以下部分:• raise 关键字...原创 2018-08-23 09:31:03 · 17102 阅读 · 1 评论 -
写入 Excel 文档
OpenPyXL 也提供了一些方法写入数据,这意味着你的程序可以创建和编辑电子 表格文件。利用 Python,创建一个包含几千行数据的电子表格是非常简单的。 创建并保存 Excel 文档 调用 openpyxl.Workbook()函数,创建一个新的空 Workbook 对象。在交互式环 境中输入以下代码: >>> import openpyxl>>&...转载 2018-09-01 16:16:37 · 171 阅读 · 0 评论 -
项目:从电子表格中读取数据
假定你有一张电子表格的数据,来自于 2010 年美国人口普查。你有一个无聊的任 务,要遍历表中的几千行,计算总的人口,以及每个县的普查区的数目(普查区就是一 个地理区域,是为人口普查而定义的)。每行表示一个人口普查区。我们将这个电子表格 文件命名为 censuspopdata.xlsx,可以从 http://nostarch.com/automatestuff/下载它。它的 内容如图 12-2 所...转载 2018-09-01 16:23:22 · 1523 阅读 · 0 评论 -
项目:更新一个电子表格
这个项目需要编写一个程序,更新产品销售电子表格中的单元格。程序将遍 历这个电子表格,找到特定类型的产品,并更新它们的价格。请从 http://nostarch.com/ automatestuff/下载这个电子表格。图 12-3展示了这个电子表格。 每一行代表一次单独的销售。列分别是销售产品的类型(A)、产品每磅的价格 (B)、销售的磅数(C),以及这次销售的总收入。TOTAL列设置为 E...转载 2018-09-01 16:57:44 · 569 阅读 · 1 评论 -
python下载所有 XKCD 漫画
博客和其他经常更新的网站通常有一个首页,其中有最新的帖子,以及一个“前 一篇”按钮,将你带到以前的帖子。然后那个帖子也有一个“前一篇”按钮,以此 类推。这创建了一条线索,从最近的页面,直到该网站的第一个帖子。如果你希望 拷贝该网站的内容,在离线的时候阅读,可以手工导航至每个页面并保存。但这是 很无聊的工作,所以让我们写一个程序来做这件事。 XKCD 是一个流行的极客漫画网站,它符合这个结构(参见图...原创 2018-08-25 19:46:23 · 1552 阅读 · 0 评论 -
python设置Excel单元格的字体风格
设置某些单元格行或列的字体风格,可以帮助你强调电子表格中重点的区域。 例如,在这个产品电子表格中,程序可以对 potato、garlic 和 parsnip 等行使用粗体。 或者也许你希望对每磅价格超过 5 美元的行使用斜体。手工为大型电子表格的某些 部分设置字体风格非常令人厌烦,但程序可以马上完成。 为了定义单元格的字体风格,需要从 openpyxl.styles 模块导入 Font()和 St...转载 2018-09-01 17:22:41 · 2928 阅读 · 0 评论 -
python Font 对象
Font 对象的 style 属性影响文本在单元格中的显示方式。要设置字体风格属性,就 向Font()函数传入关键字参数。表 12-2展示了 Font()函数可能的关键字参数。 可以调用 Font()来创建一个 Font 对象,并将这个 Font 对象保存在一个变量中。>>> import openpyxl>>> from openpyxl.st...转载 2018-09-01 19:46:46 · 26939 阅读 · 2 评论 -
python Excel公式
公式以一个等号开始,可以配置单元格,让它包含通过其他单元格计算得到的 值。在本节中,你将利用 openpyxl 模块,用编程的方式在单元格中添加公式,就像 添加普通的值一样。例如: >>> sheet['B9'] = '=SUM(B1:B8)' 这将=SUM(B1:B8)作为单元格 B9 的值。这将 B9 单元格设置为一个公式,计算 单元格 B1 到 B8 的和。图 1...转载 2018-09-01 23:14:19 · 7938 阅读 · 0 评论 -
python读取Excel文档
本章的例子将使用一个电子表格 example.xlsx,它保存在根文件夹中。你可以 自己创建这个电子文档,或从 http://nostarch.com/automatestuff/下载。图 12-1 展示了 3 个默认的表,名为 Sheet1、Sheet2 和 Sheet3,这是 Excel 自动为新工作簿提供的 (不同操作系统和电子表格程序,提供的默认表个数可能会不同)。 示例文件中的 ...转载 2018-09-01 11:03:42 · 243 阅读 · 0 评论 -
python用 BeautifulSoup 模块解析 HTML
Beautiful Soup 是一个模块,用于从 HTML 页面中提取信息(用于这个目的时,它比正则表达式好很多)。BeautifulSoup 模块的名称是 bs4(表示 Beautiful Soup,第 4 版)。要安装它,需要在命令行中运行 pip install beautifulsoup4)。虽然安装时使用的名字是 beautifulsoup4,但要导入它,就使用 import bs4。在...原创 2018-08-24 18:39:33 · 2325 阅读 · 0 评论 -
python用 requests 模块从 Web 下载文件
requests 模块让你很容易从 Web 下载文件,不必担心一些复杂的问题,诸如网络错误、连接问题和数据压缩。requests 模块不是 Python 自带的,所以必须先安装。通过命令行,运行 pip install requests。编写 requests 模块是因为 Python 的 urllib2 模块用起来太复杂。实际上,请拿一支记号笔涂黑这一段。忘记我曾提到 urllib2。如果你需要...转载 2018-08-24 17:21:35 · 22241 阅读 · 2 评论 -
python取得反向跟踪的字符串
如果 Python 遇到错误,它就会生成一些错误信息,称为“反向跟踪”。反向跟踪包含了出错消息、导致该错误的代码行号,以及导致该错误的函数调用的序列。这个序列称为“调用栈”。在 IDLE 中打开一个新的文件编辑器窗口,输入以下程序,并保存为 errorExample.py:def spam(): bacon()def bacon(): raise Exception('Th...原创 2018-08-23 09:46:37 · 979 阅读 · 0 评论 -
python断言
“断言”是一个心智正常的检查,确保代码没有做什么明显错误的事情。这些心智正常的检查由 assert 语句执行。如果检查失败,就会抛出异常。在代码中,assert语句包含以下部分:• assert 关键字;• 条件(即求值为 True 或 False 的表达式);• 逗号;• 当条件为 False 时显示的字符串。例如,在交互式环境中输入以下代码:>>> podBa...转载 2018-08-23 10:52:24 · 2812 阅读 · 2 评论 -
python日志
如果你曾经在代码中加入 print() 语句,在程序运行时输出某些变量的值,你就使用了记日志的方式来调试代码。记日志是一种很好的方式,可以理解程序中发生的事,以及事情发生的顺序。Python 的 logging 模块使得你很容易创建自定义的消息记录。这些日志消息将描述程序执行何时到达日志函数调用,并列出你指定的任何变量当时的值。另一方面,缺失日志信息表明有一部分代码被跳过,从未执行。使用日志模...原创 2018-08-23 12:43:34 · 8495 阅读 · 1 评论 -
将带有美国风格日期的文件改名为欧洲风格日期
假定你的老板用电子邮件发给你上千个文件,文件名包含美国风格的日期(MM-DD-YYYY),需要将它们改名为欧洲风格的日期(DD-MM-YYYY)。手工完成这个无聊的任务可能需要几天时间!让我们写一个程序来完成它。下面是程序要做的事:• 检查当前工作目录的所有文件名,寻找美国风格的日期。• 如果找到,将该文件改名,交换月份和日期的位置,使之成为欧洲风格。这意味着代码需要做下面的事情:• 创建...原创 2018-08-20 18:36:06 · 1076 阅读 · 0 评论 -
将一个文件夹备份到一个 ZIP 文件
假定你正在做一个项目,它的文件保存在C:\AlsPythonBook 文件夹中。你担心工作会丢失,所以希望为整个文件夹创建一个ZIP 文件,作为“快照”。你希望保存不同的版本,希望 ZIP 文件的文件名每次创建时都有所变化。例如 AlsPythonBook_1.zip、AlsPythonBook_2.zip、AlsPythonBook_3.zip,等等。你可以手工完成,但这有点烦人,而且可能不小心...原创 2018-08-20 19:37:10 · 1353 阅读 · 0 评论 -
python IDLE 的调试器
“调试器”是 IDLE 的一项功能,让你每次执行一行程序。调试器将运行一行代码,然后等待你告诉它继续。像这样让程序运行“在调试器之下”,你可以随便花多少时间,检查程序运行时任意一个时刻的变量的值。对于追踪缺陷,这是一个很有价值的工具。要启用 IDLE 的调试器,就在交互式环境窗口中点击 DebugDebugger。这将打开调试控制(Debug Control)窗口,如图 10-1 所示。...原创 2018-08-23 17:44:38 · 2294 阅读 · 0 评论 -
python利用 webbrowser 模块的 mapIt.py
webbrowser 模块的 open()函数可以启动一个新浏览器,打开指定的 URL。在交互式环境中输入以下代码:>>> import webbrowser>>> webbrowser.open('http://inventwithpython.com/')Web 浏览器的选项卡将打开 URL http://inventwithpython.com...原创 2018-08-24 10:52:12 · 1441 阅读 · 0 评论 -
python命令行163邮件程序
编写一个程序,通过命令行接受电子邮件地址和文本字符串。然后利用 selenium 登录到你的邮件账号,将该字符串作为邮件,发送到提供的地址(你也许希望为这 个程序建立一个独立的邮件账号)。 这是为程序添加通知功能的一种好方法。你也可以编写类似的程序,从 Facebook 或 Twitter 账号发送消息。 代码from selenium import webdriverimport s...原创 2018-08-28 17:44:02 · 836 阅读 · 0 评论 -
python 调整行和列
在 Excel 中,调整行和列的大小非常容易,只要点击并拖动行的边缘,或列的 头部。但如果你需要根据单元格的内容来设置行或列的大小,或者希望设置大量电 子表格文件中的行列大小,编写 Python 程序来做就要快得多。 行和列也可以完全隐藏起来。或者它们可以“冻结”,这样就总是显示在屏幕 上,如果打印该电子表格,它们就出现在每一页上(这很适合做表头)。 设置行高和列宽 Worksheet 对...转载 2018-09-02 22:06:10 · 7721 阅读 · 0 评论 -
python自动玩2048
2048 是一个简单的游戏,通过箭头向上、下、左、右移动滑块,让滑块合并。 实际上,你可以通过一遍一遍的重复“上、右、下、左”模式,获得相当高的分数。 编写一个程序,打开 https://gabrielecirulli.github.io/2048/上的游戏,不断发送上、右、 下、左按键,自动玩游戏。 代码:from selenium import webdriverfrom seleni...转载 2018-08-30 11:00:19 · 2822 阅读 · 0 评论 -
python 超级秒表
设要记录在没有自动化的枯燥任务上花了多少时间。你没有物理秒表,要为笔记本或智能手机找到一个免费的秒表应用,没有广告,且不会将你的浏览历史发送给市场营销人员,又出乎意料地困难(在你同意的许可协议中,它说它可以这样做。你确实阅读了许可协议,不是吗?)。你可以自己用 Python 写一个简单的秒表程序总的来说,你的程序需要完成:记录从按下回车键开始,每次按键的时间,每次按键都是一个新的“单圈”。...转载 2018-09-24 15:35:06 · 2389 阅读 · 1 评论 -
python PDF文档
PDF 表示 Portable Document Format,使用.pdf 文件扩展名。虽然 PDF 支持许多功能,但本章将专注于最常做的两件事:从 PDF 读取文本内容和从已有的文档生成新的 PDF。用于处理 PDF的模块是 PyPDF2。要安装它,就从命令行运行 pip install PyPDF2。这个模块名称是区分大小写的,所以要确保 y 是小写,其他字母都是大写(请查看附录 A...转载 2018-09-19 23:24:06 · 2029 阅读 · 0 评论 -
python datetime 模块
time 模块用于取得 Unix 纪元时间戳,并加以处理。但是,如果以更方便的格式显示日期,或对日期进行算术运算(例如,搞清楚 205 天前是什么日期,或 123天后是什么日期),就应该使用 datetime 模块。datetime 模块有自己的 datetime 数据类型。 datetime 值表示一个特定的时刻。 在交互式环境中输入以下代码:>>> import dat...转载 2018-09-25 21:48:30 · 194 阅读 · 0 评论 -
python 从多个 PDF 中合并选择的页面
假定你有一个很无聊的任务,需要将几十个 PDF 文件合并成一个 PDF 文件。 每一个文件都有一个封面作为第一页,但你不希望合并后的文件中重复出现这些封面。即使有许多免费的程序可以合并 PDF,很多也只是简单的将文件合并在一起。让我们来写一个 Python 程序,定制需要合并到 PDF 中的页面。总的来说,该程序需要完成:找到当前工作目录中所有 PDF 文件。 按文件名排序,这样就能有序地添...转载 2018-09-20 18:53:12 · 1658 阅读 · 0 评论 -
python 多线程
为了引入多线程的概念,让我们来看一个例子。假设你想安排一些代码,在一段延迟后或在特定时间运行。可以在程序启动时添加如下代码:import time, datetimestartTime = datetime.datetime(2029, 10, 31, 0, 0, 0)while datetime.datetime.now() < startTime:time.sleep(1)...转载 2018-09-26 16:50:04 · 407 阅读 · 0 评论 -
python Word 文档
利用 python-docx 模块, Python 可以创建和修改 Word 文档,它带有.docx 文件扩展名。运行 pip install python-docx,可以安装该模块。注意:OSI 参考模型最初是在 1983 年由国际标准化组织出版,标准号为 ISO 7498。在第一次用 pip 安装 python-docx 时,注意要安装 python-docx,而不是 docx。安装名称...转载 2018-09-21 13:44:35 · 1599 阅读 · 0 评论 -
python 暴力 PDF 口令破解程序
假定有一个加密的 PDF 文件,你忘记了口令,但记得它是一个英语单词。尝试猜测遗忘的口令是很无聊的任务。作为替代,你可以写一个程序,尝试用所有可能的英语单词来解密这个 PDF 文件,直到找到有效的口令。这称为暴力口令攻击。从http://nostarch.com/automatestuff/下载文本文件 dictionary.txt。这个字典文件包含 44000多个英语单词,每个单词占一行。利用第...转载 2018-09-21 14:45:32 · 3344 阅读 · 0 评论 -
python 多线程 XKCD 下载程序
在第 11 章,你编写了一个程序,从 XKCD 网站下载所有的 XKCD 漫画。这是一个单线程程序:它一次下载一幅漫画。程序运行的大部分时间,都用于建立网络连接来开始下载,以及将下载的图像写入硬盘。如果你有宽带因特网连接,单线程程序并没有充分利用可用的带宽。多线程程序中有一些线程在下载漫画,同时另一些线程在建立连接,或将漫画图像文件写入硬盘。它更有效地使用 Internet 连接,更迅速地下载这些...转载 2018-09-28 10:51:04 · 345 阅读 · 0 评论 -
python 数字四舍五入
在处理时间时,你会经常遇到小数点后有许多数字的浮点值。为了让这些值更易于处理,可以用 Python 内置的 round()函数将它们缩短,该函数按照指定的精度四舍五入到一个浮点数。只要传入要舍入的数字,再加上可选的第二个参数,指明需要传入到小数点后多少位。如果省略第二个参数, round()将数字四舍五入到最接近的整数。在交互式环境中输入以下代码:>>> import ti...转载 2018-09-24 15:03:02 · 2115 阅读 · 0 评论 -
python time 模块
计算机的系统时钟设置为特定的日期、时间和时区。内置的 time 模块让 Python程序能读取系统时钟的当前时间。在 time 模块中, time.time()和 time.sleep()函数是最有用的模块。 time.time()函数Unix 纪元是编程中经常参考的时间: 1970 年 1 月 1 日 0 点,即协调世界时(UTC)。 time.time()函数返回自那一刻以来的秒数,是...转载 2018-09-24 14:54:47 · 176 阅读 · 0 评论 -
Excel 到 CSV 的转换程序
Excel 可以将电子表格保存为 CSV 文件,只要点几下鼠标,但如果有几百个 Excel文件要转换为 CSV,就需要点击几小时。利用第 12 章的 openpyxl 模块, 编程读取当前工作目录中的所有 Excel 文件,并输出为 CSV 文件。一个 Excel 文件可能包含多个工作表,必须为每个表创建一个 CSV 文件。 CSV文件的文件名应该是<Excel 文件名>_<表标...转载 2018-09-24 11:24:18 · 720 阅读 · 0 评论 -
python Excel乘法表
创建程序 multiplicationTable.py,从命令行接受数字 N,在一个 Excel 电子表格 中创建一个 N×N 的乘法表。例如,如果这样执行程序: py multiplicationTable.py 6 它应该创建一个图 12-11 所示的电子表格。 行 1 和列 A 应该用做标签,应该使用粗体。 代码:import openpyxl, sysfrom...转载 2018-09-05 13:08:12 · 781 阅读 · 0 评论 -
空行插入程序
创建一个程序 blankRowInserter.py,它接受两个整数和一个文件名字符串作为命令行参数。我们将第一个整数称为 N,第二个整数称为 M。程序应该从第 N 行开始,在电子表格中插入 M 个空行。例如,如果这样执行程序:python blankRowInserter.py 3 2 myProduce.xlsx执行之前和之后的电子表格,应该如图 12-12 所示。程序可以这...转载 2018-09-18 09:04:22 · 771 阅读 · 1 评论 -
python csv 模块
CSV 文件中的每行代表电子表格中的一行,逗号分割了该行中的单元格。例如,来自 http://nostarch.com/automatestuff/的电子表格 example.xlsx,在一个 CSV 文件中,看起来像这样:4/5/2015 13:34,Apples,734/5/2015 3:41,Cherries,854/6/2015 12:46,Pears,144/8/2015 8...转载 2018-09-23 20:03:39 · 4698 阅读 · 0 评论 -
python 从 CSV 文件中删除表头
假设你有一个枯燥的任务,要删除几百 CSV 文件的第一行。也许你会将它们送入一个自动化的过程,只需要数据,不需要每列顶部的表头。可以在 Excel 中打开每个文件,删除第一行,并重新保存该文件,但这需要几个小时。让我们写一个程序来做这件事。该程序需要打开当前工作目录中所有扩展名为.csv 的文件,读取 CSV 文件的内容,并除掉第一行的内容重新写入同名的文件。这将用新的、无表头的内容替换CSV 文...转载 2018-09-23 20:27:41 · 20276 阅读 · 0 评论 -
JSON 和 API
JavaScript 对象表示法是一种流行的方式,将数据格式化,成为人可读的字符串。 JSON 是 JavaScript 程序编写数据结构的原生方式,通常类似于 Python 的 pprint()函数产生的结果。不需要了解 JavaScript,也能处理 JSON 格式的数据。下面是 JSON 格式数据的一个例子:{"name": "Zophie", "isCat": true,"mice...转载 2018-09-23 20:34:11 · 1486 阅读 · 0 评论 -
python json 模块
Python 的 json 模块处理了 JSON 数据字符串和 Python 值之间转换的所有细节,得到了 json.loads()和 json.dumps()函数。 JSON 不能存储每一种 Python 值,它只能包含以下数据类型的值:字符串、整型、浮点型、布尔型、列表、字典和 NoneType。JSON 不能表示 Python 特有的对象,如 File 对象、 CSV Reader 或 Wr...转载 2018-09-23 20:48:56 · 690 阅读 · 0 评论 -
电子表格单元格翻转程序
编写一个程序,翻转电子表格中行和列的单元格。例如,第 5 行第 3 列的值将出现在第 3 行第 5 列(反之亦然)。这应该针对电子表格中所有单元格进行。例如,之前和之后的电子表格应该看起来如图 12-13 所示。程序可以这样写:利用嵌套的 for 循环,将电子表格中的数据读入一个列表的列表。这个数据结构用 sheetData[x][y]表示列 x 和行 y 处的单元格。然后,在写入新电子表格时...转载 2018-09-18 23:31:09 · 890 阅读 · 0 评论 -
python取得当前的天气数据
检查天气似乎相当简单:打开 Web 浏览器,点击地址栏,输入天气网站的 URL(或搜索一个,然后点击链接),等待页面加载,跳过所有的广告等。其实, 如果有一个程序,下载今后几天的天气预报,并以纯文本打印出来,就可以跳过很多无聊的步骤。该程序利用 requests 模块,从网站下载数据。总的来说,该程序将执行以下操作:• 从命令行读取请求的位置。• 从 OpenWeatherMap.org 下...转载 2018-09-24 10:17:05 · 2890 阅读 · 0 评论