Python开发学习笔记
疯魔coding君
不会敲代码的程序员不是好农民,主攻 Python 领域
展开
-
json 转 python 字典对象时如何保持 k:v 对顺序不变
问题由于 restful 风格接口的流行,现在的前后端分离项目后端所提供的接口返回通常是 json 格式的数据,如果用 python requests 库获取到 json 数据做处理的话,还需要转换成 python 字典对象,在 python3.5 之前的版本字典中的元素是无序的,如果需要将 json 数据转换成 python 字典对象时保持原来的返回的数据顺序不变,那么该如何解决呢?解决方案方法一如果使用的是 python3.5 之前的版本,可以将 python 升级到 3.5 以后的版本方法二原创 2022-05-24 15:14:52 · 1091 阅读 · 1 评论 -
Django 如何将所有 app 统一放在 apps 目录下进行管理
背景在 Django 的工程目录中,主 app 跟子 app 默认是保持同一级目录的关系的,这样的项目目录层次不是很清晰,当 app 或者其他项目相关的配置文件越来越多,非常不适合进行管理需求期望能够将 Django 项目中的所有 app 统一放在某个目录下,如项目根目录下的 apps 目录下进行管理解决方案1.在项目根目录下创建 apps 文件夹,与主 app 目录保持同一级关系2.将现有的 app 目录移动到 apps 目录下3.配置 settings.py,添加如下搜索 apps 目录的原创 2022-03-19 15:38:38 · 1900 阅读 · 0 评论 -
Python 如何一秒启动 HTTP 服务器
有时候我们有这样一个需求,需要将本地文件或者远程文件通过远程终端的FTP 工具进行下载后,然后通过一些社交软件传给其他人,这样有点费时费力,如果告诉你使用 Python 能够 1 秒钟启动一个 http 的文件下载服务器,然后将 ip 和 port 告诉别人,让其他人根据自己的需要自己手动去下载,这样是不是更方便呢?那么如何快速启动一个文件下载服务器呢?其实只需要在本地某个目录下执行如下命令:Python2python -m SimpleHttpServerPython3python3原创 2022-02-22 09:07:17 · 1375 阅读 · 2 评论 -
pip 命令自动补全功能设置
pip 命令自动补全使用的是 command 命令设置步骤如下(MacOS 为例):1、查找当前 shell 的解释器类型echo $SHELL2、执行如下命令添加进环境变量配置文件pip completion --zsh >> ~/.zprofile会在该文件末尾自动添加如下内容:# pip zsh completion startfunction _pip_completion { local words cword read -Ac words read原创 2022-02-17 08:49:27 · 766 阅读 · 0 评论 -
fastapi 如何响应文件下载
fastapi 想要响应文件下载,需要从 starlette.responses 中导入 FileResponsefrom starlette.responses import FileResponse并在这之前还得安装 aiofiles 依赖包pip install aiofiles完整代码如下:FileResponse 第一个参数为文件所在路径,第二个参数表示下载时文件所显示的名称import uvicornfrom fastapi import FastAPIfrom starl原创 2021-07-05 09:59:50 · 2234 阅读 · 2 评论 -
mac 系统怎么更改 pip 源
mac 系统中更改 pip 源按如下步骤进行:cd /Userssudo mkdir .pipcd .pipsudo vim pip.conf新建 pip.conf 文件后,输入如下内容保存:[global]index-url = https://pypi.tuna.tsinghua.edu.cn/simple原创 2021-06-09 11:09:07 · 912 阅读 · 2 评论 -
ModuleNotFoundError: No module named ‘pip‘ 解决
在使用命令 pip install -U pip 更新 pip 包管理器时,出现了以下错误:然后使用 pip 再去安装其他包时,又报异常:ModuleNotFoundError: No module named 'pip',称找不到 pip 模块。这时候只需要执行如下命令即可:python -m ensurepip尝试再去安装第三方包时,成功。不过再次使用 pip install -U pip 更新 pip 时,还是会出问题,只能使用系统提示的语句去更新 pip 了:python -m p原创 2021-05-01 12:48:57 · 378 阅读 · 0 评论 -
Python 使用 pip 安装 cv2 模块
cv2 就是 opencv-python 模块直接使用如下 pip 安装命令即可:pip install opencv-python原创 2021-04-19 14:35:12 · 2493 阅读 · 0 评论 -
Python 对象与 JSON 字符串的相互转换
JSON 简介JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。json 简单说就是 javascript 中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。对象:对象在 js 中表示为{ }括起来的内容,数据结构为 { key:value, key:value, … }的键值对的结构原创 2021-04-12 15:24:09 · 1564 阅读 · 2 评论 -
PyCharm 导入普通目录下的模块时报错:ImportError: attempted relative import with no known parent package
UserWarning: h5py is running against HDF5 1.10.5 when it was built against 1.10.4, this may cause problems '{0}.{1}.{2}'.format(*version.hdf5_built_version_tuple)Warning! ***HDF5 library version mismatched error***The HDF5 header files used to compile原创 2021-03-23 11:13:12 · 5505 阅读 · 3 评论 -
Anaconda:‘conda‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
Windows 系统下 Anaconda 下载安装好后,一般情况下就可以直接使用了,但是如果在安装过程中没有勾选添加进系统环境变量的话,就会在 dos 窗口运行 conda 命令的时候报错:'conda' 不是内部或外部命令,也不是可运行的程序或批处理文件。遇到该问题时我所解决的方式如下:1.因为 conda 应用程序在 Anaconda 的安装路径 E:\Anaconda\Scripts 下:2.需要将该路径添加进系统的环境变量:3.添加完确定后,再次打开 dos 窗口,输入命令:conda原创 2021-03-22 09:02:53 · 10642 阅读 · 1 评论 -
Python 集合常见内置方法
Python 集合常见的内置方法如下表所示:序号方法描述1add()为集合添加元素2clear()移除集合中的所有元素3copy()复制一个集合4difference()返回多个集合的差集5difference_update()移除集合中的元素,该元素在指定的集合也存在6discard()移除集合中指定的元素7intersection()返回集合的交集8intersection_update()删除集合中的元素原创 2021-03-04 18:40:28 · 260 阅读 · 1 评论 -
Python 中常用的字典内置函数
序号方法描述1len(dict)计算字典中的元素个数,即键的总数2str(dict)输出字典,以可打印的字符串表示3type(variable)返回输入的变量类型,如果变量是字典就返回字典类型4dict.clear()删除字典内所有元素5dict.copy()返回一个字典的浅复制6dict.fromkeys()创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值7dict.get(key, de...原创 2021-02-28 21:00:21 · 415 阅读 · 4 评论 -
Python 中常用的字符串内置函数
序号方法描述1capitalize()将字符串的第一个字符转换为大写2center(width, fillchar)返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格3count(str, beg=0, end=len(string))返回 str 在 string 里面出现的次数。如果 beg 或者 end 指定,则返回指定范围内 str 出现的次数4bytes.decode(encoding=“utf-8”, er...原创 2021-02-27 17:09:07 · 279 阅读 · 0 评论 -
Windows 系统如何定时运行 Python 程序或脚本
需求我们经常有需要在系统上定时运行某个 Python 脚本来执行任务,例如每天定时运行 Python 爬虫脚本来获取数据,那在 Windows 系统上该如何定时运行 Python 脚本或程序呢?步骤1.快捷键 Win + x 打开计算机管理界面:2.点击任务计划程序,选择创建基本任务:3.设置任务名称,描述可写可不写,点击下一步:4.设置任务执行的频率,点击下一步:5.设置任务执行的时间和间隔,点击下一步:6.操作选择启动程序,点击下一步:7.设置脚本或程序的位置,点击下一步:原创 2021-02-17 15:09:39 · 11312 阅读 · 6 评论 -
Python 使用 PyInstaller 打包生成的 .exe 文件报错却无法查看和缺少模块问题解决
Python 中使用 PyInstaller,可以对 Python 脚本进行打包生成 .exe 可执行文件,虚拟环境中输入如下命令进行打包操作:pyinstaller -F ori.py有时候在运行 .exe 文件的时候会遇到缺少相关模块的问题,使用如下命令将引入的相关包和依赖一起打包:pyinstaller -F -p E:\PycharmProject\ori_steam\ori_env\Lib\site-packages ori.py在打包的过程中还会遇到一个问题,如果 .exe 文件执行原创 2021-02-07 16:18:12 · 2402 阅读 · 4 评论 -
Python 列表中常用的方法整理
以下是 Python 列表中常用的方法:方法描述list.append(x)把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]list.extend(L)通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = Llist.insert(i, x)在指定位置插入一个元素。第一个参数是准备插入到其前面那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.appen原创 2021-02-03 14:11:11 · 342 阅读 · 1 评论 -
Django 发送邮件报错:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。
问题笔者在使用 Django 第三方应用 Django-password-reset 的时候,需要发送邮件到指定的邮箱客户端,在 settings.py 文件中配置邮件发送的代码时,总是报错:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。解决方式一经过几番折腾,才发现自己之前为了拆分 settings.py 模块,在主应用下新建了一个 settings 包,下面包含着两个拆分的模块:base.py 和 develop.py:Ti原创 2021-02-01 10:44:10 · 2526 阅读 · 0 评论 -
Windows 系统上如何安装 Python 环境(详细教程)
与大多数 UNIX 系统和服务不同,Windows 系统没有预安装 Python。Python 仅支持微软产品支持生命周期内的 Windows 版本。这里以在 Windows 10 系统上安装 Python 3.7 的版本为例,如果需要 Windows XP支持,请安装 Python 3.4。Windows提供了许多不同的安装程序,每个安装程序都有一定的优点和缺点。这里仅介绍一种安装方式:完整安装程序 ,内含所有组件,对于使用 Python 进行任何类型项目的开发人员而言,它是最佳选择。原创 2021-01-31 14:18:54 · 41566 阅读 · 7 评论 -
Python 如何反向迭代一个序列?
在 Python 中,序列类型包括字符串、列表、元组、集合和字典,这些序列均拥有相同方式的操作: 例如利用 for 循环进行遍历操作,遍历的顺序默认都是从左到右,那么该如何从右到左反向遍历一个序列,也就是从序列索引值较大的一端开始往索引值较小的一端进行遍历呢?这里以序列中的列表类型进行举例,有如下几种方法:list1 = [x for x in range(4)]print(list1)# 运行结果:[0, 1, 2, 3]方式一:反向切片for i in list1[::-1]:.原创 2021-01-25 13:29:56 · 1626 阅读 · 2 评论 -
Python 中字符串、列表、元组、集合及字典之间的相互转换
Python 中包含几种基本的数据类型:列表(list): 是长度可变有序的数据存储容器,可以通过下标索引取到相应的数据。元组(tuple): 固定长度不可变的顺序容器,访问效率高,适合存储一些常量数据,可以作为字典的键使用。集合(set): 无序,元素只出现一次,可以自动去重。字典(dict): 长度可变的 hash 字典容器。存储的方式为键值对,可以通过相应的键获取相应的值,key 支持多种类型。key 必须是不可变类型且唯一。这些数据类型之间都可以通过不同的方法进行相互转换:1.字.原创 2021-01-23 11:41:28 · 1037 阅读 · 0 评论 -
Python 常见的数据类型转换函数
Python 提供了将变量或值从一种类型转换成另一种类型的内置函数,内置函数封装了各种转换函数,可以使用目标类型关键字强制类型转换。常见的类型转换函数如下所示:函数描述int(x, [base])将 x 转换成一个整数float(x)将 x 转换成一个浮点数complex(real[,imag])创建一个复数str(x)将对象 x 转换成字符串repr(x)将对象 x 转换为表达式字符串eval(str)用来计算在字符串中的有效 Python原创 2021-01-20 23:24:52 · 956 阅读 · 0 评论 -
Django 拆分 settings.py 配置模块
在 Django 项目中,settings.py 是一个单独的配置模块,我们在进行开发环境、测试环境和线上环境配置时不太容易处理,如果只在这一个文件里写这 3 个环境的配置,维护起来十分麻烦。因此,我们需要把这个 settings.py 拆成一个 python package,不同的配置分别定义成不同的模块(module)。如要将 settings.py 进行拆分,按如下步骤操作即可:1.首先在 settings.py 的同级目录下新建一个 python package,命名为:settings:.原创 2021-01-08 17:54:56 · 454 阅读 · 1 评论 -
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 分析
在 Django 的项目中, settings.py 配置文件都会有如下一句代码,表示当前 Django 项目的根目录,这句代码中包含着 Python 标准库的一些函数知识,这里就根据这句代码涉及到的几个知识点进行分析讲解:1.__file____file__ 是模块文件(即 .py 文件)的一个属性,返回当前模块文件所在的路径,例如在 E 盘下,当前的项目结构如下: PythonProject│ test.py打印 __file__ 返回的结果,可以看到其返回的结果是当前模块文件所在的路径:原创 2020-12-26 22:19:03 · 6914 阅读 · 3 评论 -
Python 如何使用 virtualenv 安装虚拟环境
一、虚拟环境介绍虚拟环境(virtual environment),它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。二、为什么要使用虚拟环境?项目部署时,直接导出项目对应的环境中的库就可以了;同时开发多个项目,各自项目使用的 python 版本不同,譬如一个是 python2,另一个是 python3,那么需要来回的切换 pyth原创 2020-12-26 15:24:10 · 562 阅读 · 0 评论 -
Windows 系统怎么更改 pip 源
更改系统的 pip 源可以极大的提高 Python 第三方库的下载安装速度Linux 系统下更改 pip 源可以参考以下文章:https://blog.csdn.net/qq_44214671/article/details/111008427Windows 系统下更改 pip 源的步骤如下:1.在文件夹的地址栏输入 %appdata%,进入到 C:\Users\Lenovo\AppData\Roaming 文件夹下:2.新建 pip 文件夹。3.在 pip 文件夹下新建 pip.ini 文件原创 2020-12-25 21:08:29 · 505 阅读 · 0 评论 -
Python 怎么将项目环境进行迁移(部署到服务器)
在项目进行部署的时候,我们需要在部署的服务器上导入相同的项目环境,那么如何将项目虚拟环境中添加的包和依赖进行导出和导入到部署的服务器环境中呢?1.首先打开命令行,进入到项目的虚拟环境当中,再将项目虚拟环境中添加的包和依赖通过如下命令导出到 .txt 文件中:pip freeze > requirements.txt命令执行完后,requirements.txt 文件的内容如下(相互依赖的包和版本号):aiohttp==3.7.2async-timeout==3.0.1attrs==2.原创 2020-12-25 20:29:28 · 2047 阅读 · 0 评论 -
Python 中常用的保留字(关键字)详解
Python 的保留字即关键字总共有35个,不能把他们用作任何标识符名称,关键字是区分大小写的。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字,如下所示:>>> import keyword>>> keyword.kwlist['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def',原创 2020-12-25 14:22:05 · 20439 阅读 · 0 评论 -
Python 内置函数 any() 和 all() 有什么区别?
any(iterable)如果 iterable 的任一元素为真则返回 True。 如果迭代器为空,返回 False。等价于:def any(iterable): for element in iterable: if element: return True return Falseall(iterable)如果 iterable 的所有元素为真(或迭代器为空),返回 True 。等价于:def all(iterable):原创 2020-12-24 14:17:14 · 187 阅读 · 0 评论 -
Python 模块的本地发布以及上传模块到 PyPI
当我们完成了某个模块开发后,可以将其对外发布,其他开发者也可以以”第三方扩展库“的方式使用我们的模块。我们按照如下步骤即可实现模块的发布:模块的本地发布1.为模块文件创建如下结构的文件夹、包和模块文件(Demo 是对外发布的模块名):demo1.py 的内容结构如下:# -*- coding: utf-8 -*-""" @Author: runqian_lee @Blog: https://blog.csdn.net/qq_44214671 @Time: 2020.原创 2020-12-17 17:48:54 · 617 阅读 · 4 评论 -
Python 如何动态导入模块
1.import() 动态导入我们一般在模块开始部分通过 import 语句实现模块的导入和使用,import 本质上是使用了内置函数 __import__().math = __import__('math')print(math.pi)# 运行结果:3.141592653589793注意:一般不建议自行使用__import__() 导入,其行为在 python2 和 python3 中有差异,会导致意外错误。如果需要动态导入可以使用 importlib 模块。2.使用 import原创 2020-12-17 15:28:48 · 1475 阅读 · 0 评论 -
Python 垃圾回收机制详解
垃圾回收机制:GC机制垃圾回收机制:GC机制 Python: 1.引用计数机制为主 如何获取一个对象的引用计数? sys.getrefcount(p) 刚创建对象引用计数为 2 a.增加引用计数操作 1.如果有新的对象使用该对象 +1 2.装进列表 +1 3.作为函数参数 +1 b.减少引用计数操作 1.如果有新的对象使用该对象,新对象不再使用时 -1原创 2020-12-13 14:15:22 · 318 阅读 · 1 评论 -
Python 字符串驻留机制(intern 机制)
每个单词(字符串),不夹杂空格或者其他符号,只由大小写字母、数字和下划线组成时,默认开启 intern 机制,共享内存,靠引用计数决定是否销毁。案例1:Python 交互式环境>>> a = 'HelloWorld'>>> b = 'HelloWorld'>>> a is bTrue>>> a = 'Hello World'>>> b = 'Hello World'>>> a .原创 2020-12-11 16:30:27 · 477 阅读 · 4 评论 -
Python 使用 type 动态创建类的方法
在 Python 中可以定义如下的一个静态类:class Person: def __init__(self, name, age): self.name = name self.age = age def who(self): print(f'我叫{self.name},今年{self.age}岁了')print(type(Person))运行结果:<class 'type'>我们可以看到,在 Python原创 2020-12-11 15:08:29 · 248 阅读 · 0 评论 -
Python 函数式编程之偏函数
当我们需要经常去调用一个函数,并且许多调用都反复使用相同参数的情况下,该如何减少重复性,增强可读性,提高效率呢?假如我们要反复调用一个函数:用来将字面值为二进制的字符串通过 int() 函数转换成十进制数,那么该如何实现呢?我们可以重新定义一个函数:def int2(a, base=2): return int(a, base)print(int2('1010'))# 运行结果:10虽然这样能够解决该问题,不过应用偏函数的效果会更加好。要想使用偏函数,首先得导入 func.原创 2020-12-08 18:04:37 · 188 阅读 · 0 评论 -
Python 核心特性之生成器与迭代器
生成器通过列表生成式(列表推导式),我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的 list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器: generator。优点: 需要新的数字,就生成一原创 2020-12-07 01:30:37 · 177 阅读 · 1 评论 -
Python 中 time.clock() 和 time.time() 的联系和区别
联系Python 中有个内置标准模块——time 模块,该模块提供了各种时间相关的函数。而在 time 模块中有两个函数:clock() 和 time(),都能用作计算程序运行的时间,其用法如下:clock()import time# 创建列表推导式时间开销time.clock()list_ = [x for x in range(0, 1000000, 2)]lt = time.clock()print(f'创建列表推导式时间开销:{lt}')# 运行结果:创建列表推导式时原创 2020-12-06 16:58:41 · 5361 阅读 · 2 评论 -
Python 多线程的创建与使用
进程(Process)是一个具有一定独立功能的程序关于某个数据集合的一次运行活动线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。那么多线程有什么作用呢?在讲解线程之前Python 的标准库提供了两个模块:_thread 和 threading,_thread 是低级模块, threading 是高级模块,对_thread 进行了封装。绝大多数情况下,我们只需要使用 threading 这个高级模块来创建线程。线程的创建有两种方式:方法包.原创 2020-12-05 12:16:05 · 264 阅读 · 0 评论 -
Python 常见异常汇总
Python 中内建异常类的继承层次:Python 常见异常汇总异常名称说明ArithmeticError所有数值计算错误的基类AssertionError断言语句失败AttributeError对象没有这个属性BaseException所有异常的基类DeprecationWarning关于被弃用的特征的警告EnvironmentError操作系统错误的基类EOFError没有内建输入,到达 EOF 标记Exception常原创 2020-11-30 21:59:26 · 280 阅读 · 1 评论 -
Python 中怎么将多个输入值赋值给多个变量 | map() 函数的使用
问题有时候我们想将从 input 中获取多个值并且同时赋值给多个变量,以减少代码行数,那么有什么方法能够实现该需求呢?分析在 Python 当中有一个高阶函数:map() 映射函数可以解决这个问题。、map() 映射函数作用map 将传入的函数依次作用到传入可迭代对象的每一个元素上,得到一个新的可迭代对象并返回。语法map(func, *iterables)参数func – 传入的函数(普通函数 | lambda 函数(匿名函数))Iterable 可迭代对象返回值返回一个原创 2020-11-25 21:28:40 · 6167 阅读 · 1 评论