网站开发的技术类型有哪些,用自己的话回答网络营销是什么,网站管理员权限有哪些,外链网盘系统目录 编辑
10.1.6 包含一百万位的大型文件
pi_string.py
10.1.7 圆周率值中包含你的生日吗
10.2 写入文件
10.2.1 写入空文件
write_message.py
programming.txt
10.2.2 写入多行
10.2.3 附加到文件
write_message.py
programming.txt
10.3 异常
10.3.1 处理 Ze…目录 编辑
10.1.6 包含一百万位的大型文件
pi_string.py
10.1.7 圆周率值中包含你的生日吗
10.2 写入文件
10.2.1 写入空文件
write_message.py
programming.txt
10.2.2 写入多行
10.2.3 附加到文件
write_message.py
programming.txt
10.3 异常
10.3.1 处理 ZeroDivisionError 异常
division.py
10.3.2 使用 try-except 代码块
10.3.3 使用异常避免崩溃
division.py
往期快速传送门在文章最后
感谢大家的支持欢迎订阅收藏专栏将持续更新 10.1.6 包含一百万位的大型文件 前面我们分析的都是一个只有三行的文本文件但这些代码示例也可处理大得多的文件。 如果我们有一个文本文件其中包含精确到小数点后1 000 000位而不是30位的圆周率值也可 创建一个包含所有这些数字的字符串。为此我们无需对前面的程序做任何修改只需将这个 文件传递给它即可。在这里我们只打印到小数点后50位以免终端为显示全部1 000 000位而 不断地翻滚 pi_string.py filename pi_million_digits.txt
with open(filename) as file_object:lines file_object.readlines()
pi_string
for line in lines:pi_string line.strip()
print(pi_string[:52] ...)
print(len(pi_string)) 输出表明我们创建的字符串确实包含精确到小数点后1 000 000位的圆周率值 3.14159265358979323846264338327950288419716939937510...
1000002 对于你可处理的数据量Python没有任何限制只要系统的内存足够多你想处理多少数据 都可以。 注意 要运行这个程序以及后面的众多示例你需要从https://www.nostarch.com/pythoncrashcourse/下载相关的资源。 10.1.7 圆周率值中包含你的生日吗 我一直想知道自己的生日是否包含在圆周率值中。下面来扩展刚才编写的程序以确定某个 人的生日是否包含在圆周率值的前1 000 000位中。为此可将生日表示为一个由数字组成的字符 串再检查这个字符串是否包含在pi_string中 filename pi_million_digits.txt
with open(filename) as file_object:lines file_object.readlines()
pi_string
for line in lines:pi_string line.rstrip()
1 birthday input(Enter your birthday, in the form mmddyy: )1
2 if birthday in pi_string:print(Your birthday appears in the first million digits of pi!)
else:print(Your birthday does not appear in the first million digits of pi.) 在1处我们提示用户输入其生日在接下来的2处我们检查这个字符串是否包含在 pi_string中。运行一下这个程序 Enter your birthdate, in the form mmddyy: 120372
Your birthday appears in the first million digits of pi! 我的生日确实出现在了圆周率值中读取文件的内容后就可以以你能想到的任何方式对其 进行分析。 10.2 写入文件 保存数据的最简单的方式之一是将其写入到文件中。通过将输出写入文件即便关闭包含程 序输出的终端窗口这些输出也依然存在你可以在程序结束运行后查看这些输出可与别人分 享输出文件还可编写程序来将这些输出读取到内存中并进行处理。 10.2.1 写入空文件 要将文本写入文件你在调用open()时需要提供另一个实参告诉Python你要写入打开的文 件。为明白其中的工作原理我们来将一条简单的消息存储到文件中而不是将其打印到屏幕上 write_message.py filename programming.txt
1 with open(filename, w) as file_object:
2 file_object.write(I love programming.) 在这个示例中调用open()时提供了两个实参见1。第一个实参也是要打开的文件的名称 第二个实参w告诉Python我们要以写入模式打开这个文件。打开文件时可指定读取模 式r、写入模式w、附加模式a或让你能够读取和写入文件的模式r。如果 你省略了模式实参Python将以默认的只读模式打开文件。 如果你要写入的文件不存在函数open()将自动创建它。然而以写入w模式打开文 件时千万要小心因为如果指定的文件已经存在Python将在返回文件对象前清空该文件。 在2处我们使用文件对象的方法write()将一个字符串写入文件。这个程序没有终端输出 但如果你打开文件programming.txt将看到其中包含如下一行内容 programming.txt filename programming.txt
with open(filename, w) as file_object:file_object.write(I love programming.)file_object.write(I love creating new games.) I love programming. 相比于你的计算机中的其他文件这个文件没有什么不同。你可以打开它、在其中输入新文 本、复制其内容、将内容粘贴到其中等。 注意 Python只能将字符串写入文本文件。要将数值数据存储到文本文件中必须先使用函数 str()将其转换为字符串格式。 10.2.2 写入多行 函数write()不会在你写入的文本末尾添加换行符因此如果你写入多行时没有指定换行符 文件看起来可能不是你希望的那样 如果你打开programming.txt将发现两行内容挤在一起 I love programming.I love creating new games. 要让每个字符串都单独占一行需要在write()语句中包含换行符 filename programming.txt
with open(filename, w) as file_object:file_object.write(I love programming.\n)file_object.write(I love creating new games.\n) 现在输出出现在不同行中 I love programming.
I love creating new games. 像显示到终端的输出一样还可以使用空格、制表符和空行来设置这些输出的格式。 10.2.3 附加到文件 如果你要给文件添加内容而不是覆盖原有的内容可以附加模式打开文件。你以附加模式 打开文件时Python不会在返回文件对象前清空文件而你写入到文件的行都将添加到文件末尾。 如果指定的文件不存在Python将为你创建一个空文件。 下面来修改write_message.py在既有文件programming.txt中再添加一些你酷爱编程的原因 write_message.py filename programming.txt
1 with open(filename, a) as file_object:
2 file_object.write(I also love finding meaning in large datasets.\n)
file_object.write(I love creating apps that can run in a browser.\n) 在1处我们打开文件时指定了实参a以便将内容附加到文件末尾而不是覆盖文件原 来的内容。在2处我们又写入了两行它们被添加到文件programming.txt末尾 programming.txt I love programming.
I love creating new games.
I also love finding meaning in large datasets.
I love creating apps that can run in a browser. 最终的结果是文件原来的内容还在它们后面是我们刚添加的内容。 10.3 异常 Python使用被称为异常的特殊对象来管理程序执行期间发生的错误。每当发生让Python不知 所措的错误时它都会创建一个异常对象。如果你编写了处理该异常的代码程序将继续运行 如果你未对异常进行处理程序将停止并显示一个traceback其中包含有关异常的报告。 异常是使用try-except代码块处理的。try-except代码块让Python执行指定的操作同时告 诉Python发生异常时怎么办。使用了try-except代码块时即便出现异常程序也将继续运行 显示你编写的友好的错误消息而不是令用户迷惑的traceback。 10.3.1 处理 ZeroDivisionError 异常 下面来看一种导致Python引发异常的简单错误。你可能知道不能将一个数字除以0但我们 还是让Python这样做吧 division.py print(5/0) 显然Python无法这样做因此你将看到一个traceback Traceback (most recent call last):File division.py, line 1, in moduleprint(5/0)
1 ZeroDivisionError: division by zero 在上述traceback中1处指出的错误ZeroDivisionError是一个异常对象。Python无法按你的 要求做时就会创建这种对象。在这种情况下Python将停止运行程序并指出引发了哪种异常 而我们可根据这些信息对程序进行修改。下面我们将告诉Python发生这种错误时怎么办这样 如果再次发生这样的错误我们就有备无患了。 10.3.2 使用 try-except 代码块 当你认为可能发生了错误时可编写一个try-except代码块来处理可能引发的异常。你让 Python尝试运行一些代码并告诉它如果这些代码引发了指定的异常该怎么办。 处理ZeroDivisionError异常的try-except代码块类似于下面这样 try:print(5/0)
except ZeroDivisionError:print(You cant divide by zero!) 我们将导致错误的代码行print(5/0)放在了一个try代码块中。如果try代码块中的代码运行 起来没有问题Python将跳过except代码块如果try代码块中的代码导致了错误Python将查找 这样的except代码块并运行其中的代码即其中指定的错误与引发的错误相同。 在这个示例中try代码块中的代码引发了ZeroDivisionError异常因此Python指出了该如 何解决问题的except代码块并运行其中的代码。这样用户看到的是一条友好的错误消息而 不是traceback You cant divide by zero! 如果try-except代码块后面还有其他代码程序将接着运行因为已经告诉了Python如何处 理这种错误。下面来看一个捕获错误后程序将继续运行的示例。 10.3.3 使用异常避免崩溃 发生错误时如果程序还有工作没有完成妥善地处理错误就尤其重要。这种情况经常会出 现在要求用户提供输入的程序中如果程序能够妥善地处理无效输入就能再提示用户提供有效 输入而不至于崩溃。 下面来创建一个只执行除法运算的简单计算器 division.py print(Give me two numbers, and Ill divide them.)
print(Enter q to quit.)
while True:
1 first_number input(\nFirst number: )
if first_number q:break
2 second_number input(Second number: )
if second_number q:break
3 answer int(first_number) / int(second_number)print(answer) 在1处这个程序提示用户输入一个数字并将其存储到变量first_number中如果用户输 入的不是表示退出的q就再提示用户输入一个数字并将其存储到变量second_number中见2。 接下来我们计算这两个数字的商即answer见3。这个程序没有采取任何处理错误的措施 因此让它执行除数为0的除法运算时它将崩溃 Give me two numbers, and Ill divide them.
Enter q to quit.
First number: 5
Second number: 0
Traceback (most recent call last):File division.py, line 9, in moduleanswer int(first_number) / int(second_number)
ZeroDivisionError: division by zero 程序崩溃可不好但让用户看到traceback也不是好主意。不懂技术的用户会被它们搞糊涂 而且如果用户怀有恶意他会通过traceback获悉你不希望他知道的信息。例如他将知道你的程 序文件的名称还将看到部分不能正确运行的代码。有时候训练有素的攻击者可根据这些信息 判断出可对你的代码发起什么样的攻击。 关于“Python”的核心知识点整理大全12-CSDN博客
往期快速传送门在文章最后
感谢大家的支持欢迎订阅收藏专栏将持续更新