自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 问答 (2)
  • 收藏
  • 关注

原创 20201224_152_PyPI官网_远程上传和管理模块_PIP方式安装模块

文章目录4.3 上传模块到 PyPI注册 PyPI 网站创建用户信息文件.pypirc上传并远程发布管理你的模块4.4 让别人使用你的模块4.3 上传模块到 PyPI将自己开发好的模块上传到 PyPI 网站上,将成为公开的资源,可以让全球用户自由使用。按照如下步骤做,很容易就实现上传模块操作。注册 PyPI 网站注册 PyPI 网站:http://pypi.python.org注意:会发送一封邮件到你的邮箱。请点击验证后继续下面的步骤。创建用户信息文件.pypirc方式 1: 使用命令(适用

2020-12-25 07:58:43 1015

原创 20201224_151_模块的本地发布_模块的安装

文章目录4. 模块发布和安装4.1 模块的本地发布4.2 本地安装模块4. 模块发布和安装4.1 模块的本地发布当我们完成了某个模块开发后,可以将他对外发布,其他开发者也可以以“第三方扩展库”的方式使用我们的模块。我们按照如下步骤即可实现模块的发布:为模块文件创建如下结构的文件夹(一般,文件夹的名字和模块的名字一样):2.在文件夹中创建一个名为“setup.py”的文件,内容如下:from distutils.core import setup# distutils 指归档文件包se

2020-12-25 07:54:13 175 2

原创 20201223_150_sys.path和模块搜索路径详解

文章目录3.7 sys.path 和模块搜索路径使用 sys.path 查看和临时修改搜索路径pythonpath 环境变量的设置.pth 文件的写法3.7 sys.path 和模块搜索路径当我们导入某个模块文件时, Python 解释器去哪里找这个文件呢?只有找到这个文件才能读取、装载运行该模块文件。它一般按照如下路径寻找模块文件(按照顺序寻找,找到即停不继续往下寻找):内置模块即在程序中import的模块;当前目录指在当前工作路径下,例如下图:我正在编辑 module_AA1.py 的话

2020-12-25 07:48:09 391 2

原创 20201223_149_包的本质和init文件_批量导入_包内引用

文章目录3.4 导入包的本质3.5 用*导入包3.6 包内引用3.4 导入包的本质导入包的本质其实是“导入了包的__init__.py”文件。也就是说,”import pack1”意味着执行了包 pack1 下面的__init__.py 文件。 这样,可以在__init__.py 中批量导入我们需要的模块,而不再需要一个个导入。【例1】包 a 的 __init__.py 定义中,如下图:所以实际上导入 a 包的时候就是批量导入了 turtle 和 math 两个包。并且,再单独导入 math

2020-12-24 14:15:02 274

原创 20201223_148_包的概念和创建包和导入包

文章目录3. 包 package 的使用3.1 包(package)的概念和结构3.2 pycharm 中创建包3.3 导入包操作3. 包 package 的使用3.1 包(package)的概念和结构当一个项目中有很多个模块时,需要再进行组织。我们将功能类似的模块放到一起,形成了“包”。本质上,“包”就是一个必须有__init__.py 的文件夹。典型结构如下:包下面可以包含“模块(module)”,也可以再包含“子包(subpackage)”。就像文件夹下面可以有文件,也可以有子文件夹一样。

2020-12-24 14:12:16 190

原创 20201223_147_import加载底层原理_importlib模块

文章目录2.4 __import__()动态导入2.5 模块的加载问题重新加载2.4 import()动态导入import 语句本质上就是调用内置函数__import__(),我们可以通过它实现动态导入,即给__import__()动态传递不同的的参数值,就能导入不同的模块。【例】使用__import__()动态导入指定的模块s = 'math'm = __import__(s) # 导入后生成的模块对象引用给变量mprint(m.pi)运行结果:注意:一般不建议我们自行使用__i

2020-12-24 14:10:16 196

原创 20201222_146_模块导入_import 和 from_import 语句详解和区别

文章目录2. 模块的导入2.1 import 语句导入2.2 from…import 导入2.3 import 语句和 from...import 语句的区别2. 模块的导入模块化设计的好处之一就是“代码可复用性高”。写好的模块可以被反复调用,重复使用。模块的导入就是“在本模块中使用其他模块”。2.1 import 语句导入import 语句的基本语法格式如下:import 模块名 #导入一个模块import 模块 1,模块 2… #导入多个模块import 模块名 as 模块别名 #导

2020-12-23 13:20:18 1227

原创 20201222_145_模块化编程的流程_设计和实现分离

文章目录1.4 模块化编程的流程1.5 模块的 API 和功能描述要点1.6 模块文档字符串和 API 设计1.7 模块的创建和测试代码1.4 模块化编程的流程模块化编程的一般流程:设计 API,进行功能描述;编码实现 API 中描述的功能;在模块中编写测试代码,并消除全局代码;使用私有函数实现不被外部客户端调用的模块函数。1.5 模块的 API 和功能描述要点API(Application Programming Interface 应用程序编程接口)是用于描述模块中提供的函数和类的功

2020-12-23 13:16:52 289

原创 20201222_144_模块化编程理念_什么是模块_哲学思想

文章目录第七章 模块(module)1. 模块化(module)程序设计理念1.1 模块和包概念的进化史1.2 标准库模块(standard library)1.3 为什么需要模块化编程第七章 模块(module)1. 模块化(module)程序设计理念1.1 模块和包概念的进化史“量变引起质变”是哲学中一个重要的理论。量变为什么会引起质变呢?本质上理解,随着数量的增加,管理方式会发生本质的变化;旧的管理方式完全不适合,必须采用新的管理方式。程序越来越复杂,语句多了,怎么管理?很自然的,我们将实现

2020-12-23 13:12:15 358

原创 20201222_143__递归算法原理_目录树结构展示

【例】使用递归算法遍历目录下所有文件import osall_file = []def get_files(path, level): sub_files = os.listdir(path) for file in sub_files: file_path = os.path.join(path, file) if os.path.isdir(file_path): get_files(file_path, level +

2020-12-22 10:38:32 106

原创 20201222_142_递归算法原理_阶乘计算

递归算法递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。利用递归可以用简单的程序来解决一些复杂的问题。比如:斐波那契数列的计算、汉诺塔、快排等问题。递归结构包括两个部分: 定义递归头:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。 递归体:什么时候需要调用自身方法。【例】使用递归求 n!def factorial(n): if n == 1: retu

2020-12-22 10:37:01 136

原创 20201221_141_shutil和zipfile模块_压缩和解压缩

【例1】实现将文件夹所有内容压缩(使用 shutil 模块 + zipfile模块)import shutilimport zipfile# 将test01文件夹下所有内容压缩到“test03”文件下,生成testzip.zipshutil.make_archive('test03/testzip', 'zip', 'test01')# zipfile模块的压缩功能相比于shutil模块中的压缩功能更加全面一些# 压缩:将指定的多个文件压缩到一个zip文件中z = zipfile.ZipF

2020-12-22 10:35:42 128

原创 20201221_140_shutil模块_文件和目录拷贝

shutil 模块(拷贝和压缩)shutil 模块是 python 标准库中提供的,主要用来做文件和文件夹的拷贝、移动、删除等;还可以做文件和文件夹的压缩、解压缩操作。os 模块提供了对目录或文件的一般操作。shutil 模块作为补充,提供了移动、复制、压缩、解压等操作,这些 os 模块都没有提供。【例1】实现文件的拷贝import shutil# copy文件内容shutil.copyfile('a.txt','a_copy.txt')运行结果:【例2】实现递归的拷贝文件夹内容(使

2020-12-22 10:34:04 307 3

原创 20201221_139__os模块_使用walk遍历

walk()递归遍历所有文件和目录os.walk()方法:返回一个 3 个元素的元组,(dirpath, dirnames, filenames)。dirpath:指定目录的路径dirnames:目录下的所有文件夹filenames:目录下的所有文件【例】使用 walk()递归遍历所有文件和目录import osall_files = []path = os.getcwd()list_files = os.walk(path)for dir_path, dir_names,

2020-12-22 10:32:06 139

原创 20201220_138_os.path模块_常用方法

os.path 模块os.path 模块提供了目录相关(路径判断、路径切分、路径连接、文件夹遍历)的操作方法描述isabs(path)判断path是否为绝对路径isdir(path)判断路径是否为目录isfile(path)判断路径是否为文件exists(path)判断指定路径的文件是否存在getsize(filename)返回文件的大小abspath(path)返回文件的绝对路径dirname§返回所在目录getctime(f

2020-12-22 10:31:10 157

原创 20201217_137_os模块_获得文件信息_创建文件夹_递归创建

os 模块-文件和目录操作我们可以通过前面讲的文件对象实现对于文件内容的读写操作,如果还需要对文件和目录做其他操作,可以使用 os 和 os.path 模块。os 模块下常用操作文件的方法方法名描述remove(path)删除指定文件rename(src,dest)重命名文件或者目录stat(path)返回文件的所有属性listdir(path)返回path目录下的文件和目录列表注释:scr abbr. 源文件(source)dest 目的对象

2020-12-21 11:23:49 108

原创 20201217_136_os模块_调用操作系统可执行文件_控制台乱码问题

os 和 os.path 模块os 模块(operate system)可以帮助我们直接对操作系统进行操作。我们可以直接调用操作系统的可执行文件、命令,直接操作文件、目录等等。在系统运维的核心基础。os 模块-调用操作系统命令通过 os.system 直接调用系统的命令【例1】os.system 调用 windows 系统的记事本程序import osos.system('notepad.exe')运行结果:打开了记事本程序【例2】os.system 调用 windows 系统中 p

2020-12-21 11:23:11 259

原创 20201216_135_CSV文件的读取_写入

CSV 文件的操作csv(Comma Separated Values)是逗号分隔符文本格式,常用于数据交换、Excel文件和数据库数据的导入和导出。与 Excel 文件不同,CSV 文件中:值没有类型,所有值都是字符串不能指定字体颜色等样式不能指定单元格的宽高,不能合并单元格没有多个工作表不能嵌入图像图表Python 标准库的模块 csv 提供了读取和写入 csv 格式文件的对象。我们在 excel 中建立一个简单的表格:另存为"csv(逗号分隔)",我们打开查看这个 csv 文件

2020-12-21 11:19:12 126

原创 20201214_134_使用pickle实现序列化和反序列化

使用 pickle 序列化Python 中,一切皆对象,对象本质上就是一个“存储数据的内存块”。有时候,我们需要将“内存块的数据”保存到硬盘上,或者通过网络传输到其他的计算机上。这时候,就需要用到“对象的序列化和反序列化”(二进制序列)。对象的序列化机制广泛的应用在分布式、并行系统上。序列化指的是:将对象转化成“串行化”数据形式,存储到硬盘或通过网络传输到其他地方。反序列化是指相反的过程,将读取到的“串行化数据”转化成对象。我们可以使用 pickle 模块中的函数,实现序列化和反序列操作。实现序列化

2020-12-18 11:22:41 222

原创 20201213_133_文件对象常用方法和属性总结_seek()任意位置操作

文件对象的常用属性和方法文件对象封装了文件相关的操作。在前面我们学习了通过文件对象对文件进行读写操作。本节中详细列出文件对象的常用属性和方法,并进行说明。文件对象的属性属性说明name返回文件的名字mode返回文件的打开模式closed若文件关闭则返回True文件对象的打开模式模式说明rread,只读模式wwrite,写模式aappend,追加模式bbinary,二进制模式(可与其他模式组合使用)+读写

2020-12-18 11:21:25 254

原创 20201213_132_二进制文件的读写_图片文件拷贝

二进制文件的读取和写入二进制文件的处理流程和文本文件流程一致。首先还是要创建文件对象,区别是,我们还需要指定二进制模式,从而创建出二进制文件对象。例如:f = open(r"d:\a.txt", 'wb') # 可写的、重写模式的二进制文件对象f = open(r"d:\a.txt", 'ab') # 可写的、追加模式的二进制文件对象f = open(r"d:\a.txt", 'rb') # 可读的二进制文件对象创建好二进制文件对象后,仍然可以使用 write()、read()实现文件的读

2020-12-18 11:20:25 159

原创 20201213_131_enumerate()函数和推导式生成列表_操作每行增加行号

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。enumerate方法的语法:enumerate(sequence, [start=0]) # start= 是定义下标起始数字,默认是0。【例1】试用enumerate方法direction = ['east', 'south', 'west', 'north']a = enumerate(direction)print(a)print(l

2020-12-18 11:19:50 197

原创 20201213_130_文本文件的读取

文本文件的读取文件的读取一般使用如下三个方法:read([size])从文件中读取 size 个字符,并作为结果返回。如果没有 size 参数,则默认读取整个文件。读取到文件末尾,会返回空字符串。readline()读取一行内容作为结果返回。读取到文件末尾,会返回空字符串。readlines()文本文件中,每一行作为一个字符串存入列表中,返回该列表。下面看看应用示例:【例1】读取一个文件的前 12 个字符with open(r'f:\a.txt', 'r', encoding='ut

2020-12-18 11:18:51 186

原创 20201211_129_关闭流要点2_with上下文管理_现场还原

with 语句(上下文管理器)with 关键字(上下文管理器)可以自动管理上下文资源,不论什么原因跳出 with 块,都能确保文件正确地关闭,且可以在代码块执行完毕后自动还原进入该代码块时的现场。【例】使用 with 管理文件写入操作s = ['学习的第一天,OK\n', '学习的第二天,OK', '学习的第三天,OK']with open(r'f:\a.txt', 'w', encoding='utf-8') as f: f.writelines(s)...

2020-12-13 21:35:29 128

原创 20201211_128_关闭流要点1_try异常管理

write()/writelines()写入数据write(a):用于把指定字符串写入到文件中。writelines(b):用于向文件中写入一序列的字符串,这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符 \n。【例】添加字符串列表数据到文件中f = open(r'f:\a.txt', 'w', encoding='utf-8')s = ['学习的第一天,OK\n', '学习的第二天,OK', '学习的第三天,OK']f.writelines(s)f.close

2020-12-13 21:34:48 176

原创 20201211_127_编码知识_中文乱码问题解决

常用编码介绍在操作文本文件时,经常会操作中文,这时候就经常会碰到乱码问题。为了让大家有能力解决中文乱码问题,这里简单介绍一下各种编码之间的关系。常用编码之间的关系如下:ASCII全称为 American Standard Code for Information Interchange,美国信息交换标准代码,这是世界上最早最通用的单字节编码系统,主要用来显示现代英语及其他西欧语言。ASCII 码用 7 位表示,只能表示 128 个字符。只定义了 2^7=128 个字符,用7bit 即可完全编码,

2020-12-13 21:33:47 3744

原创 20201211_126_file文件操作_操作系统底层关系_写入文件

第八章 文件操作(IO 技术)一个完整的程序一般都包括数据的存储和读取;我们在前面写的程序数据都没有进行实际的存储,因此 python 解释器执行完数据就消失了。实际开发中,我们经常需要从外部存储介质(硬盘、光盘、U 盘等)读取数据,或者将程序产生的数据存储到文件中,实现“持久化”保存。有基础的同学知道,很多软件系统是将数据存储的数据库中;数据库实际也是基于文件形式存储的,本章我们就学习文件的相关操作。文本文件和二进制文件按文件中数据组织形式,我们把文件分为文本文件和二进制文件两大类。文本文件

2020-12-13 21:29:35 144

原创 20201211_125_pycharm的调试模式

Pycharm 开发环境的调试进行调试的核心是设置断点。程序执行到断点时,暂时挂起,停止执行。就像看视频按下暂停一样,我们可以详细的观看暂停处的每一个细节,就可以看清楚程序运行的来龙去脉。断点程序运行到此处,暂时挂起,停止执行。我们可以详细在此时观察程序的运行情况,方便做出进一步的判断。设置断点:(1) 在行号后面单击即可增加断点(2) 在断点上再单击即可取消断点进入调试视图通过如下三种方式都可以进入调试视图:(1) 单击工具栏上的按钮:(2) 右键单击编辑区,点击:debug

2020-12-13 21:27:22 352

原创 20201210_124_自定义异常类_raise抛出异常

自定义异常类程序开发中,有时候我们也需要自己定义异常类。自定义异常类一般都是运行时异常,通常继承 Exception 或其子类即可。命名一般以 Error、Exception 为后缀。自定义异常由 raise 语句主动抛出。【例】自定义异常类和 raise 语句class AgeError(Exception): # 继承父类Exception def __init__(self, error_info): Exception.__init__(self)

2020-12-12 07:41:12 232

原创 20201210_123_trackback模块的使用_异常写入日志文件

trackback 模块程序很多时候是服务器在运行,不会时时刻刻有人在电脑前看着,应用Trackback模块将错误信息写入日志文件中,可以便于运维人员定期去翻阅异常记录文件查错。【例】使用 Traceback 模块打印异常信息import tracebacktry: print('step1') num = 1 / 0except: with open('f:/a.log', 'a') as f: # open()的'a'模式(可以联系append方法去理解和记忆),打

2020-12-12 07:40:37 285

原创 20201210_122__with上下文管理

with 上下文管理由于finally 块是否发生异常都会执行,通常我们用来放释放资源。其实,我们也可以通过 with 上下文管理,更方便的实现释放资源的操作。with上下文管理相对于finally是补充,不是取代,因为with上下文管理主要适用于打开文件需要及时释放资源时,而try、except、finally的使用范围更广。with 上下文管理的语法结构如下:with context_expr [ as var]: 语句块with 上下文管理可以自动管理资源,在 with 代码块执行

2020-12-12 07:40:01 146 1

原创 20201210_121_常见异常汇总和说明

return 语句和异常处理问题由于 return 有两种作用:结束方法运行、返回值。我们一般不把 return 放到异常处理结构中,而是放到方法最后。【例1.1】异常结构中return的使用方式def test01(): print('step1') try: x = 3 / 0 # return 'a' except: print('step2') print('异常:0不能作为除数') # r

2020-12-12 07:39:11 290 2

原创 20201209_120__finally结构

try…except…finally 结构try…except…finally 结构中,finally 块无论是否发生异常都会被执行;通常用来释放 try 块中申请的资源。finally块中的语句不仅在是否报错的情况下都执行;并且即使在上层循环体的break语句之后,上层循环体结束时finally语句块中的代码也会执行。【例1】try…except…finally 结构的使用while True: try: a = input('请输入被除数:') if a

2020-12-10 21:47:25 127

原创 20201209_119_else结构

try…except…else 结构try…except…else 结构增加了“else 块”。如果 try 块中没有抛出异常,则执行 else 块。如果try 块中抛出异常,则执行 except 块,不执行 else 块。【例】try…except…else 结构的使用while True: try: a = input('请输入被除数:') if a == 'quit': print('退出程序。') brea

2020-12-10 21:44:48 103

原创 20201209_118_try_多个except结构

try…多个 except 结构上一课的结构(指except BaseException:)可以捕获所有的异常,工作中也很常见。但是,从经典理论考虑,一般建议尽量捕获可能出现的多个异常(按照先子类后父类的顺序;如果没有子父类关系那顺序就随意了),并且针对性的写出异常处理代码。为了避免遗漏可能出现的异常,可以在最后增加 BaseException。结构如下:try: 被监控的、可能引发异常的语句块except Exception1: 处理 Exception1 的语句块except E

2020-12-10 21:43:56 449

原创 20201209_117_try_except基本结构

try…一个 except 结构try…except 是最常见的异常处理结构,其结构如下:try: 被监控的可能引发异常的语句块except BaseException [as e]: 异常处理语句块try 块包含着可能引发异常的代码,except 块则用来捕捉和处理发生的异常。执行的时候,如果 try 块中没有引发异常,则跳过 ecept 块继续执行try块、except块以外的后续代码;如果 try块中发生了异常,则跳过 try 块中的后续代码,跳到相应的 except 块中处

2020-12-10 21:39:19 707

原创 20201209_116_异常的本质_调试核心理念

文章目录20201209_116_异常的本质_调试核心理念第9章 异常和错误导引问题异常处理机制本质解决异常问题的态度解决异常的关键:定位20201209_116_异常的本质_调试核心理念第9章 异常和错误导引问题在实际工作中,我们遇到的情况不可能是非常完美的。比如:你写的某个模块,用户输入不一定符合你的要求;你的程序要打开某个文件,这个文件可能不存在或者文件格式不对;你要读取数据库的数据,数据可能是空的;我们的程序在运行着,但是内存或硬盘可能满了等等。软件程序在运行过程中,非常可能遇到刚刚提到的

2020-12-10 21:36:32 129

原创 20201207_115.设计模式_单例模式实现

文章目录设计模式_单例模式实现实操作业8设计模式_单例模式实现单例模式(Singleton Pattern)的核心作用是确保一个类只有一个实例,并且提供一个访问该实例的全局访问点。单例模式只生成一个实例对象,减少了对系统资源的开销。当一个对象的产生需要比较多的资源,如读取配置文件、产生其他依赖对象时,可以产生一个“单例对象”,然后永久驻留内存中,其他需要读取配置参数的到这个读取了配置文件的对象中去引用就行了(读取配置文件的时候),从而极大的降低开销。单例模式有多种实现的方式,这里根据已掌握的知识基础

2020-12-08 21:14:23 222

原创 20201206_114.设计模式_工厂模式实现

设计模式_工厂模式实现设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计模式有很多种,比较流行的是:GOF(Goup Of Four)23 种设计模式。当然,我们没有必要全部学习,学习几个常用的即可。对于初学者,我们学习两个最常用的模式:工厂模式和单例模式。工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一的管理和控制。【案例】工厂模式举例例1.1 创建者使用型,需要去记每一个子类的名字class Benz: passcla

2020-12-08 08:26:12 93

原创 20201206_113.组合

组合“is-a”关系,我们可以使用“继承”。从而实现子类拥有的父类的方法和属性。“is-a”关系指的是类似这样的关系:狗是动物,dog is animal。狗类就应该继承动物类。“has-a”关系,我们可以使用“组合”,也能实现一个类拥有另一个类的方法和属性。”has-a”关系指的是这样的关系:手机拥有 CPU。 MobilePhone has a CPU。【案例】组合举例class MobilePhone: def __init__(self, cpu ,screen):

2020-12-07 09:55:52 78

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除