首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于“Python”的核心知识点整理大全26

10.4.2 保存和读取用户生成的数据 对于用户生成的数据,使用json保存它们大有裨益,因为如果不以某种方式进行存储,等 序停止运行时用户的信息将丢失。...下面来看一个这样的例子:用户首次运行序时被提示输入自己的名字,这样再次运行序时就记住他了。...我们需要将这两个程序合并到一个程序(remember_me.py)中。这个程序运行时,我们将尝 试从文件username.json中获取用户名,因此我们首先编写一个尝试恢复用户名的try代码块。...用户首次运行这个序时,文件username.json不存在, 将引发FileNotFoundError异常(见3),因此Python将执行except代码块:提示用户输入其用户名 (见4),再使用json.dump...如果这个 序是首次运行,输出将如下: What is your name? Eric We'll remember you when you come back, Eric!

11110
您找到你想要的搜索结果了吗?
是的
没有找到

关于“Python”的核心知识点整理大全25

print(msg) 在这个示例中,try代码块引发FileNotFoundError异常,因此Python找出与该错误匹配的 except代码块,并运行其中的代码。...为计算Alice in Wonderland包含多少个单词,我们将对整篇小说调用split(),再计算得到的列表包含多少个元 素,从而确定整篇童话大致包含多少个单词: filename = 'alice.txt...当我们使用len()来确定这个列表 的长度时,就知道了原始字符串大致包含多少个单词(见)。在处,我们打印一条消息,指 出文件包含多少个单词。...故意没有将siddhartha.txt放到word_count.py所在的目录中,让你能够看到这 个程序在文件不存在时处理得有多出色: def count_words(filename): --...10.3.8 失败时一声不吭 在前一个示例中,我们告诉用户有一个文件找不到。但并非每次捕获到异常时都需要告诉用 户,有时候你希望程序在发生异常时一声不吭,就像什么都没有发生一样继续运行

8410

(数据科学学习手札135)tenacity:Python中最强大的错误重试库

,如调用web接口、运行网络爬虫等任务时,经常会遇到一些偶然发生的请求失败的状况,这种时候如果我们仅仅简单的捕捉错误然后跳过对应任务,肯定是不严谨的,尤其是在网络爬虫中,会存在损失有价值数据的风险。   ...这类情况下我们就很有必要为我们的程序逻辑添加一些错误重试的策略,费老师在几年前写过文章介绍过Python中的retry库,但它功能较为单一,只能应对基本的需求。   ...而今天要给大家介绍的tenacity库,可能是目前Python生态中最好用的错误重试库,下面就让我们一睹其主要功能吧~ 2 tenacity中的常用功能   作为一个第三方Python库,我们可以使用...2.2 设置最大重试次数   有些时候我们对某段函数逻辑错误重试的忍耐是有限度的,譬如当我们调用某个网络接口时,如果连续n次都执行失败,我们可能就会认为这个任务本身就存在缺陷,不是通过重试就能有朝一日正常的...demo_func9()的统计结果进行打印: demo_func9.retry.statistics   除了上述的功能之外,tenacity还具有很多特殊的特性,可以结合logging模块、异步函数、协等其他

53920

Python中最强大的错误重试库

,如调用web接口、运行网络爬虫等任务时,经常会遇到一些偶然发生的请求失败的状况,这种时候如果我们仅仅简单的捕捉错误然后跳过对应任务,肯定是不严谨的,尤其是在网络爬虫中,会存在损失有价值数据的风险。...这类情况下我们就很有必要为我们的程序逻辑添加一些「错误重试」的策略,费老师在几年前写过文章介绍过Python中的retry库,但它功能较为单一,只能应对基本的需求。...而今天要给大家介绍的tenacity库,可能是目前Python生态中最好用的错误重试库,下面就让我们一睹其主要功能吧~ 2 tenacity中的常用功能 作为一个第三方Python库,我们可以使用pip...2.2 设置最大重试次数 有些时候我们对某段函数逻辑错误重试的忍耐是有限度的,譬如当我们调用某个网络接口时,如果连续n次都执行失败,我们可能就会认为这个任务本身就存在缺陷,不是通过重试就能有朝一日正常的...demo_func9()的统计结果进行打印: demo_func9.retry.statistics 除了上述的功能之外,tenacity还具有很多特殊的特性,可以结合logging模块、异步函数、协等其他

61320

腾讯大佬整理了 Python 所有内置异常,Python高手必备的排错手册

在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如:在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一套代码就会出错...所以,我们就需要捕获出现的异常,以防止程序因为错误信息而终止运行 Python 有很多的内置异常,也就是说 Python 开发者提前考虑到了用户编程过程中可能会出现这类错误,所以制造了这些内置异常可以快速准确向用户反馈出错信息帮助找出代码中的...Bug Python 官方文档中也给出了所有内置异常及触发条件,为了更好的阅读体验,把所有异常及触发条件整理成了一张思维导图: ?...,即使这个值的类型是正确的,比如想获取一个列表中某个不存在值的索引 In [22]: n = [1,2,3] In [23]: n.index(4) --------------------------...FileNotFoundError 为打开文件错误,当用户试图以读取方式打开一个不存在的文件时引发 In [29]: fb = open('.

99430

一文搞懂文件操作与异常模块

是云朵君,今天给大家带来一篇Python文件操作与异常处理,这两个部分往往是初学者入门时容易忽略的部分。...从文件中读取可以让你处理各种各样的信息;写入文件允许用户在下次运行你的程序时重新开始。您可以将文本写入文件,还可以将Python结构(如列表)存储在数据文件中。...例如,如果程序试图打开一个不存在的文件,可以使用异常来显示一个信息丰富的错误消息,而不是使程序崩溃。 将可能导致错误的代码放置在try块中。响应错误时应该运行的代码位于except块中。...尝试编写没有try块的代码,并让它生成一个错误。回溯将告诉您程序需要处理哪种异常。 else代码块 try块应该只包含可能导致错误的代码。任何依赖于try块成功运行的代码都应该放在else块中。...正如所写的,它将优雅地处理错误并继续运行。 # 一个简单的除法计算器。 print("Enter two numbers.

93210

干!一张图整理了 Python 所有内置异常

在编写程序时,可能会经常报出一些异常,很大一方面原因是自己的疏忽大意导致程序给出错误信息,另一方面是因为有些异常是程序运行时不可避免的,比如在爬虫时可能有几个网页的结构不一致,这时两种结构的网页用同一套代码就会出错...,所以我们就需要捕获出现的异常,以防止程序因为错误信息而终止运行。...Python官方文档中也给出了所有内置异常及触发条件,为了更好的阅读体验,把所有异常及触发条件整理成了一张思维导图: [a3d32747-03e8-4754-bf55-31a899d63290.png...,即使这个值的类型是正确的,比如想获取一个列表中某个不存在值的索引。...FileNotFoundError为打开文件错误,当用户试图以读取方式打开一个不存在的文件时引发。

93830

解决pyinstaller打包运行序时出现缺少plotly库问题

搜索一阵发现是pyinstaller在打包的时候(StartRun.py要打包的主程序文件)可能会漏掉一些三方库,就在打包的时候加上三方库的绝对路径: pyinstaller StartRun.py...pyinstaller打包常用命令: -F 指定打包后只生成一个exe格式的文件 -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项) -c –console, –nowindowed...打包带有plotly的程序后,在运行序时会出现如下反馈 “c:\users*\appdata\local\continuum\anaconda3\envs\py34\lib\site-p ackages...\PyInstaller\loader\pyimod03_importers.py”, line 474, in get_data with open(path, ‘rb’) as fp: FileNotFoundError...复制完成后,就可以顺利使用exe文件啦~ 到此这篇关于解决pyinstaller打包运行序时出现缺少plotly库问题的文章就介绍到这了,更多相关pyinstaller打包运行plotly出错内容请搜索

2.2K40

Python进阶——如何正确使用yield?

这篇文章,我们就来看一下 yield 的运行流程,以及在开发中哪些场景适合使用 yield。 生成器 如果在一个方法内,包含了 yield 关键字,那么这个函数就是一个「生成器」。...下面介绍几个例子,分别是大集合的生成、简化代码结构、协与并发,你可以参考这些使用场景来使用 yield。...在开发多进程、多线程程序时,为了防止共享资源被篡改,我们通常还需要加锁进行保护,这样就增加了编程的复杂度。 在 Python 中,除了使用进程和线程之外,我们还可以使用「协」来提高代码的运行效率。...我们使用协编写生产者、消费者的程序时,它的好处是: 整个程序运行过程中无锁,不用考虑共享变量的保护问题,降低了编程复杂度 程序在函数之间来回切换,这个过程是用户态下进行的,不像进程 / 线程那样,会陷入到内核态...Python 的 yield 也是实现协和并发的基础,它提供了协这种用户态的编程模式,提高了程序运行的效率。

1.9K10

Go 并发编程

/线程 协:独立的栈空间,共享堆空间,调度由用户自己控制,本质上有点类似于用户级线程,这些用户级线程的调度也是自己实现的。 线程:一个线程上可以跑多个协,协是轻量级的线程。...使用Go语言开发服务器程序时,就需要对它的并发机制有深入的了解。...使用 go 关键字就可以创建 goroutine,将 go 声明放到一个需调用的函数之前,在相同地址空间调用运行这个函数,这样该函数执行时便会作为一个独立的并发线程,这种线程在Go语言中则被称为 goroutine...channel 是类型相关的,也就是说,一个 channel 只能传递一种类型的值,这个类型需要在声明 channel 时指定。...当我们的 Web 服务器面对大量用户请求时,需要有更多的“Web 服务器工作单元”来分别响应用户。

41340

揭秘:微信如何用 libco 支撑8亿用户?

作者:Leiffy 导语 正如 tony 所说"微信将会发展为数字社会的基础设置,做一个很好的产品,做一个很酷的产品,这个理念对于微信团队来说,已经不足够"。...千万级协支持 libco 默认是每一个独享一个运行栈,在协创建的时候,从堆内存分配一个固定大小的内存作为该协运行栈。...为此,libco 也提供了 stackless 的协共享栈模式,可以设置若干个协共享同一个运行栈。同一个共享栈下的协间切换的时候,需要把当前的运行栈内容拷贝到协的私有内存中。...因为协实质上是线程内串行执行的,所以当我们定义了一个线程私有变量的时候,可能会有重入的问题。比如我们定义了一个_thread 的线程私有变量,原本是希望每一个执行逻辑独享这个变量的。...但当我们的执行环境迁移到协了之后,同一个线程私有变量,可能会有多个协会操作它,这就导致了变量重入的问题。为此,我们在做 libco 异步化改造的时候,把大部分的线程私有变量改成了协级私有变量。

2.2K11

揭秘:微信是如何用libco支撑8亿用户的

千万级协支持 libco默认是每一个独享一个运行栈,在协创建的时候,从堆内存分配一个固定大小的内存作为该协运行栈。...为此,libco也提供了stackless的协共享栈模式,可以设置若干个协共享同一个运行栈。同一个共享栈下的协间切换的时候,需要把当前的运行栈内容拷贝到协的私有内存中。...协私有变量 多进程程序改造为多线程程序时候,我们可以用__thread来对全局变量进行快速修改,而在协环境下,我们创造了协变量ROUTINE_VAR,极大简化了协的改造工作量。...因为协实质上是线程内串行执行的,所以当我们定义了一个线程私有变量的时候,可能会有重入的问题。比如我们定义了一个__thread的线程私有变量,原本是希望每一个执行逻辑独享这个变量的。...但当我们的执行环境迁移到协了之后,同一个线程私有变量,可能会有多个协会操作它,这就导致了变量冲入的问题。为此,我们在做libco异步化改造的时候,把大部分的线程私有变量改成了协级私有变量。

1.1K50

python基础教程:异步IO 之编程例子

sayhi()函数是通过 asyncio.run()来运行的,而不是直接调用这个函数(协)。因为,直接调用并不会把它加入调度日程,而只是简单的返回一个对象: ? 那么,如何真正运行一个呢?...运行上面这段程序,结果为: co is now is 1548512708.2026224 now is 1548512708.202648 可以看到,直接运行函数 whattime()得到的co...是一个对象,因为协对象是可等待的,所以通过 await 得到真正的当前时间。...猜想是这样的:4个任务生成在前,第18行的sleep在后,事件循环的消息响应可能有个先进先出的顺序。后面深入asyncio的代码专门研究一下这个猜想正确与否。...写异步IO程序时记住一个准则:需要IO的地方异步。其它地方即使用了协函数也是没用的。

75720

解决Python在导入文件时的FileNotFoundError问题

例如,在运行这段代码时 from keras.utils import plot_model plot_model(model, to_file=’images/model_mnist.png’,...: [Errno 2] No such file or directory: ‘objects/epsilon.pkl 前言 看微信推送了一个好玩的应用强化学习dinosrun,但是在运行时,遇到了这个问题...由于你的文件的打开方式是’w’,也就是文件不存在时就创建文件,所以那个pkl文件(指的是相对路径中的pkl)不存在会自动创建,这不是问题,问题就在于那个相对路径,就是那个path是否存在,这个文件夹不存在一样会出问题...所以先要判断这个path是否存在。不存在则创建。...以上这篇解决Python在导入文件时的FileNotFoundError问题就是小编分享给大家的全部内容了,希望能给大家一个参考。

4.8K10

微信开源 libco :简单易用高性能的协

千万级协支持 libco 默认是每一个独享一个运行栈,在协创建的时候,从堆内存分配一个固定大小的内存作为该协运行栈。...为此,libco 也提供了 stackless 的协共享栈模式,可以设置若干个协共享同一个运行栈。同一个共享栈下的协间切换的时候,需要把当前的运行栈内容拷贝到协的私有内存中。...协私有变量 多进程程序改造为多线程程序时候,我们可以用__thread来对全局变量进行快速修改,而在协环境下,我们创造了协变量 ROUTINE_VAR ,极大简化了协的改造工作量。...因为协实质上是线程内串行执行的,所以当我们定义了一个线程私有变量的时候,可能会有重入的问题。比如我们定义了一个__thread的线程私有变量,原本是希望每一个执行逻辑独享这个变量的。...但当我们的执行环境迁移到协了之后,同一个线程私有变量,可能会有多个协会操作它,这就导致了变量冲入的问题。为此,我们在做libco异步化改造的时候,把大部分的线程私有变量改成了协级私有变量。

3.6K10
领券