关于“Python”的核心知识点整理大全24-1

简介: 关于“Python”的核心知识点整理大全24

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.

最终的结果是,文件原来的内容还在,它们后面是我们刚添加的内容。


关于“Python”的核心知识点整理大全24-2

https://developer.aliyun.com/article/1424792?spm=a2c6h.13148508.setting.20.10644f0eaP3tHw

目录
相关文章
|
4月前
|
测试技术 API Python
【10月更文挑战第1天】python知识点100篇系列(13)-几种方法让你的电脑一直在工作
【10月更文挑战第1天】 本文介绍了如何通过Python自动操作鼠标或键盘使电脑保持活跃状态,避免自动息屏。提供了三种方法:1) 使用PyAutoGUI,通过安装pip工具并执行`pip install pyautogui`安装,利用`moveRel()`方法定时移动鼠标;2) 使用Pymouse,通过`pip install pyuserinput`安装,采用`move()`方法移动鼠标绝对位置;3) 使用PyKeyboard,同样需安装pyuserinput,模拟键盘操作。文中推荐使用PyAutoGUI,因其功能丰富且文档详尽。
|
6月前
|
Python
python知识点
【8月更文挑战第27天】python知识点
3412 2
WK
|
6月前
|
存储 机器学习/深度学习 JSON
Python入门知识点
Python入门覆盖历史、设计理念、变量、数据类型、控制结构等。了解Python的发展,掌握动态类型的灵活性,熟悉整数、浮点数、字符串等数据类型。学会if/else、for/while循环构建逻辑流程,使用def定义函数,lambda快速创建匿名函数。通过类实现面向对象编程,利用模块和包组织代码。掌握try-except处理异常,open()进行文件操作。利用标准库和第三方库增强功能,理解集合、字典、列表推导式的应用,深入魔法方法、递归、装饰器等高级特性,以及上下文管理器和字符串、列表、元组的操作技巧。
WK
51 0
|
3月前
|
缓存 Java 索引
[Python]知识点
本文主要介绍了Python的一些高级知识点和使用细节,包括pip的使用、内置函数、列表、元组、字典、集合、变量、Lambda表达式、面向对象编程、异常处理、模块及标准库等。文章适合有一定Python基础的读者,重点在于深入理解和掌握Python的高级特性。文中还提供了大量示例代码,帮助读者更好地理解和应用这些知识点。
59 1
[Python]知识点
|
4月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
129 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
4月前
|
网络协议 数据库连接 Python
python知识点100篇系列(17)-替换requests的python库httpx
【10月更文挑战第4天】Requests 是基于 Python 开发的 HTTP 库,使用简单,功能强大。然而,随着 Python 3.6 的发布,出现了 Requests 的替代品 —— httpx。httpx 继承了 Requests 的所有特性,并增加了对异步请求的支持,支持 HTTP/1.1 和 HTTP/2,能够发送同步和异步请求,适用于 WSGI 和 ASGI 应用。安装使用 httpx 需要 Python 3.6 及以上版本,异步请求则需要 Python 3.8 及以上。httpx 提供了 Client 和 AsyncClient,分别用于优化同步和异步请求的性能。
python知识点100篇系列(17)-替换requests的python库httpx
|
4月前
|
调度 Python
python知识点100篇系列(20)-python协程与异步编程asyncio
【10月更文挑战第8天】协程(Coroutine)是一种用户态内的上下文切换技术,通过单线程实现代码块间的切换执行。Python中实现协程的方法包括yield、asyncio模块及async/await关键字。其中,async/await结合asyncio模块可更便捷地编写和管理协程,支持异步IO操作,提高程序并发性能。协程函数、协程对象、Task对象等是其核心概念。
|
4月前
|
Python Windows
python知识点100篇系列(24)- 简单强大的日志记录器loguru
【10月更文挑战第11天】Loguru 是一个功能强大的日志记录库,支持日志滚动、压缩、定时删除、高亮和告警等功能。安装简单,使用方便,可通过 `pip install loguru` 快速安装。支持将日志输出到终端或文件,并提供丰富的配置选项,如按时间或大小滚动日志、压缩日志文件等。还支持与邮件通知模块结合,实现邮件告警功能。
python知识点100篇系列(24)- 简单强大的日志记录器loguru
|
4月前
|
自然语言处理 Python Windows
python知识点100篇系列(23)- 使用stylecloud生成词云
【10月更文挑战第10天】`stylecloud` 是 `wordcloud` 的优化版,支持使用 Font Awesome 图标自定义词云形状,操作更简便。本文介绍如何安装 `jieba` 和 `stylecloud` 库,并使用它们生成中文词云。通过 `jieba` 进行分词,再利用 `stylecloud` 的 `gen_stylecloud` 方法生成具有特定形状和颜色的词云图像。
python知识点100篇系列(23)- 使用stylecloud生成词云
|
4月前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。