首页
关于道锋
工具
友情链接
公告栏
麟图图床
麟云文件
麟云KMS
Search
1
兽装曲腿制作文档
1,313 阅读
2
Frpc使用XTCP不通过服务器传输
1,139 阅读
3
使用ReDroid打造自己的云手机
1,109 阅读
4
Cloudflare SAAS 接入自选教程
835 阅读
5
CloudFront CDN配置教程
709 阅读
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
登录
Search
标签搜索
开源
源码
教程
服务器
环境搭建
摄影
rustlang
Rust
VS CODE
v2ray
bbr
加速
网络优化
拥塞控制
CloudFront教程
CF教程
AWS教程
CloudFront接入
Frpc
Frps
道锋潜鳞
累计撰写
447
篇文章
累计收到
104
条评论
首页
栏目
默认
科学
热力学
Furry
小说
星河野望
手工制作
道具制作
音影
图像工具
计算机
渗透
硬件
编程
网络
记录
AI人工智能
CVE
软件工具
装机教程
C/C++
C#
Go
HTML5+JS+CSS
JAVA
Lua
Rust
PHP
Python2/3
Nodejs
编译
C/C++学习日志
Golang学习日志
Rust开发技巧
Rust学习日志
Rust开发教程
Nonebot2机器人框架
python开发教程
python开发技巧
Python学习日志
ai绘画
电子电路
电路设计
PCB打板
制作实战
无线电
摄影
运维
WEB
KVM云计算
docker
Ansible
代码管理
Kubernetes
Linux
MySQL
shell
集群
Zabbix
Prometheus
数据安全
Redis
istio
ELK
Nginx
Apache
Tomcat
Elasticsearch
Logstash
Kibana
测评
服务器
页面
关于道锋
工具
友情链接
公告栏
友人
PCD-01’s Blog
iMin博客
特资啦!个人资源分享站
黎洛云综合门户网站
1mxy笔记
三石的记录
咬一口激动的鱼
温瞳's Blog
中二病晚期の物語
奇梦博客
布丁の小窝
道麟笔记
小林笔记
迷失的小K
koto's Site
Abyss-博客
西西のBlog
锐冰龙小站
麟图图床
麟云文件
麟云KMS
搜索到
11
篇与
的结果
2024-08-25
新版ubuntu使用pip时发生的错误
新版ubuntu使用pip时发生错误:error: externally-managed-environment × This environment is externally managed ╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install. If you wish to install a non-Debian-packaged Python package, create a virtual environment using python3 -m venv path/to/venv. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make sure you have python3-full installed. If you wish to install a non-Debian packaged Python application, it may be easiest to use pipx install xyz, which will manage a virtual environment for you. Make sure you have pipx installed. See /usr/share/doc/python3.11/README.venv for more information. note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages. hint: See PEP 668 for the detailed specification.收到一个错误提示: error: externally-managed-environment ,即“外部管理环境”错误,但这不是一个 bug,新的发行版中,正在使用 Python 包来实现此增强功能,这个更新是为了避免操作系统包管理器 (如pacman、yum、apt) 和 pip 等特定于 Python 的包管理工具之间的冲突,这些冲突包括 Python 级 API 不兼容和文件所有权冲突。可以看一下python官方的说明:PEP 668 – Python base environments Python 增强提案 (PEP) 解决方案:1:如果你习惯于原来的用法可以强制删除此警告:sudo mv /usr/lib/python3.x/EXTERNALLY-MANAGED /usr/lib/python3.x/EXTERNALLY-MANAGED.bk注意python版本号写你自己的别直接抄,不知道到底是多少可以进/user/lib看看:find /usr/lib/ -type d -name "*python*"2:老实点使用pipx安装pipx:sudo apt install pipx以后就使用Pipx去安装包文件了:pipx install package_name添加环境变量:pipx ensurepath删除使用pipx安装的软件包:pipx uninstall package_name3:使用venv如果你是专业开发人员,在运行或构建py文件时遇到“ModuleNotFoundError: No module named 'xxx'”错误,推荐使用Python虚拟环境,借助虚拟环境,使用不同版本的包依赖项和Python,避免包之间的任何冲突。安装 venv:sudo apt install python3-venv #或者 sudo apt install python3.10-venv生成Python虚拟环境:mkdir -p $HOME/.env && python3 -m venv $HOME/.env/project_name将看到一个.env在主目录中,并且你将在 .env 中拥有项目目录,每个虚拟环境项目目录中都会有自己的 Python 和 Pip 副本。安装模块:$HOME/.env/project_name/bin/python -m pip install --upgrade pip $HOME/.env/project_name/bin/python -m pip install package_name用新的虚拟环境执行py文件:source $HOME/.env/project_name/bin/activate $HOME/.env/project_name/bin/python ./xxxx.py
2024年08月25日
11 阅读
0 评论
0 点赞
2023-07-21
shell脚本案例-Python安装脚本
shell脚本案例-Python安装脚本
2023年07月21日
92 阅读
0 评论
0 点赞
2023-02-25
在FastApi中运行Asyncio子进程导致NotImplementedError错误的解决方法
在FastApi中运行Asyncio子进程导致NotImplementedError错误的解决方法
2023年02月25日
137 阅读
1 评论
0 点赞
2021-08-29
nonebot2如何获取消息内图片
研究半天无果,群内一位大佬提供解决方法:images = [d.data["url"] for d in event.get_message() if d.type == "image"]通过迭代消息对象,判断是否为图片消息,然后返回一个由图片url组成的数组event上报:感谢这位老哥提供的方法
2021年08月29日
83 阅读
0 评论
0 点赞
2021-05-30
Python3操作Redis数据库(二)
7.psetex(name, time_ms, value) time_ms - 过期时间(数字毫秒 或 timedelta对象)import redis import time pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) r.psetex("whoisdaofeng", 5000, "a dragon") time.sleep(5) print(r.get('whoisdaofeng')) # 5秒后,取值就从a dragon变成None8.mset(*args, **kwargs) 批量获取print(r.mget('daofengql', 'name'))10.getset(name, value)print(r.getset("daofengql", "strong dragon")) # 设置的新值是strong dragon 设置前的值是a dragon print(r.get('daofengql'))11.getrange(key, start, end) 获取子序列(根据字节获取,非字符)参数:name - Redis 的 namestart - 起始位置(字节)end - 结束位置(字节)r.set("name", "道峰潜鳞") print(r.getrange("name", 0, 2)) # 取索引号是0-2 前3位的字节 道 切片操作 一个汉字3个字节 1个字母一个字节 每个字节8bit12.setrange(name, offset, value) 修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)参数:offset - 字符串的索引,字节(一个汉字三个字节)value - 要设置的值r.set("ename","da") r.setrange("ename", 1, "daofengql") print(r.get("ename"))13.strlen(name) 返回name对应值的字节长度(一个汉字3个字节)import redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) r.set("dragon","daofengql") print(r.strlen("dragon")) # 9 'daofengql'的长度是9 14.incr(self, name, amount=1) 自增 name 对应的值,当 name 不存在时,则创建 name=amount,否则,则自增。参数:name - Redis的nameamount - 自增数(必须是整数)import redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) r.set("data1", 1) print(r.get("data1")) for i in range(0,30): r.incr("data1", amount=1) print(r.get("data1")) print(r.get("data2")) for i in range(0,30): r.incr("data2", amount=1) print(r.get("data2")) 15.incrbyfloat(self, name, amount=1.0) 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。参数:name - Redis的nameamount - 自增数(浮点型)import redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) r.set("data1", "1.0") print(r.get("data1")) for i in range(0,30): r.incrbyfloat("data1", amount=0.1) print(r.get("data1")) print(r.get("data2")) for i in range(0,30): r.incrbyfloat("data2", amount=0.1) print(r.get("data2")) 16.delete(keyname) 删除键import redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) r.set("data1", "1") print(r.get("data1")) r.delete("data1") print(r.get("data1")) 未完待续...
2021年05月30日
70 阅读
1 评论
0 点赞
2021-05-30
Python3操作Redis数据库(一)
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。首先安装一个Python-redis的包使用PIP pip install redis 或者使用 pip3 install redis测试是否安装成功:import redis那么,启动redis服务来测试一下(注:各环境下Redis服务各有不同,这里以Windows版为例)测试这里建立简单连接来测试>>> import redis >>> r = redis.StrictRedis(host='localhost', port=6379, db=0) >>> r.set('foo', 'bar') True >>> r.get('foo') 'bar'可以通过查看子类来了解所包含的参数选项这里Redis是StrictRedis的子类 def __init__(self, host='localhost', port=6379, db=0, password=None, socket_timeout=None, socket_connect_timeout=None, socket_keepalive=None, socket_keepalive_options=None, connection_pool=None, unix_socket_path=None, encoding='utf-8', encoding_errors='strict', charset=None, errors=None, decode_responses=False, retry_on_timeout=False, ssl=False, ssl_keyfile=None, ssl_certfile=None, ssl_cert_reqs=None, ssl_ca_certs=None):redis 提供两个类 Redis 和 StrictRedis, StrictRedis 用于实现大部分官方的命令,Redis 是 StrictRedis 的子类,用于向后兼用旧版本。redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串。>>> import redis # 导入redis 模块 >>> r = redis.Redis(host='localhost', port=6379, decode_responses=True) >>> r.set('name', 'daofengql') # 设置 name 对应的值 True >>> print(r['name']) daofengql >>> print(r.get('name')) # 取出键 name 对应的值 daofengql >>> print(type(r.get('name'))) # 查看类型 <class 'str'> >>>连接池redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数 Redis,这样就可以实现多个 Redis 实例共享一个连接池。>>> import redis # 导入redis 模块 >>> pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) >>> r = redis.Redis(host='localhost', port=6379, decode_responses=True) >>> r.set('name', 'daofengql') # 设置 name 对应的值 True >>> print(r.get('name')) # 取出键 name 对应的值 daofengql >>>根据前面子类中对链接的定义,可以对照着传入其他参数,例如选择数据库的db数,安全链接的密码,超时等等例如:>>> import redis # 导入redis 模块 >>> pool = redis.ConnectionPool(host='localhost', port=6379,db=1,password="passwd", decode_responses=True)redis 基本命令 Stringset(name, value, ex=None, px=None, nx=False, xx=False)在 Redis 中设置值,默认,不存在则创建,存在则修改。参数:ex - 过期时间(秒)px - 过期时间(毫秒)nx - 如果设置为True,则只有name不存在时,当前set操作才执行xx - 如果设置为True,则只有name存在时,当前set操作才执行例:1.ex - 过期时间(秒) 这里过期时间是3秒,3秒后p,键food的值就变成Noneimport redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) r.set('who', 'daofeng', ex=5) # 将键值对存入redis缓存设置5秒过期 print(r.get('who')) print(r.get('who'))2.px - 过期时间(豪秒) 这里过期时间是3豪秒,3毫秒后,键foo的值就变成Noneimport redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) r.set('daofengql', '1', px=3) print(r.get('daofengql'))3.nx - 如果设置为True,则只有name不存在时,当前set操作才执行 (新建)import redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) print(r.set('daofengql', 'a dragon', nx=True)) # True--不存在 # 如果键不存在,那么输出是True;如果键已经存在,输出是None4.xx - 如果设置为True,则只有name存在时,当前set操作才执行 (修改)import redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) print((r.set('name', 'a dragon', xx=True))) # True--已经存在 # 如果键已经存在,那么输出是True;如果键不存在,输出是None5.setnx(name, value)设置值,只有name不存在时,执行设置操作(添加)import redis pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) print(r.setnx('whois', 'a dragon')) # whois不存在,输出为True r.set('name', 'a dragon') print(r.setnx('name', 'a dragon')) # name存在,输出为False 6.setex(name, time, value) time - 过期时间(数字秒 或 timedelta对象)import redis import time pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True) r = redis.Redis(connection_pool=pool) r.setex("whoisdaofeng", 5, "a dragon") time.sleep(5) print(r.get('whoisdaofeng')) # 5秒后,取值就从a dragon变成None 下接:Python3操作Redis数据库(二)
2021年05月30日
54 阅读
0 评论
0 点赞
2021-02-09
Python Flask+Qrcode实现在线动态二维码生成
代码如下:from PIL import Image import qrcode from io import BytesIO from flask import Flask, send_file, jsonify, request, Response, json import sys import base64 import random import json #定义库区块 app = Flask(__name__) status_base64 = {} #返回状态码json源字典体 #二维码创建路由1 @app.route("/api/QRcode/create/", methods = ["GET", "POST"]) def code_share(): try: #尝试执行下方代码,判断请求主体的base64编码是否解码异常若异常则执行except区块的代码 if request.method=='GET': url64 = request.args.get("url") or "aHR0cHM6Ly9iLjRsMi5jbi8="#get获取URL参数 iconm = request.args.get("icon") or "logo"#GET获取logo参数 else: url64 = request.form.get("url") or "aHR0cHM6Ly9iLjRsMi5jbi8="#POST获取URL参数 iconm = request.form.get("icon") or "logo"#POST获取logo参数 url = base64.b64decode(url64).decode("utf-8") #转化url参数 except Exception as e: #若检测到处理异常,则转换返回模式变为json,返回相关错误的消息 status_base64["status"] = "error" status_base64["code"] = 1 status_base64["Msg"] = str(e) return Response(json.dumps(status_base64), mimetype='application/json') else: #若前方try执行正确无异常,则执行生成操作返回数据 return make_code(url,iconm) #生成器函数 def make_code(url,iconm): qr = qrcode.QRCode(version=8, error_correction=3, box_size=8, border=4) qr.add_data(url) qr.make(fit=True) img = qr.make_image()#初步生成 img = img.convert("RGBA") icon = Image.open("res/" + iconm +".png")#获取logo图片数据 img_w, img_h = img.size factor = 4 size_w = int(img_w / factor) size_h = int(img_h / factor) icon_w, icon_h = icon.size if icon_w > size_w: icon_w = size_w if icon_h > size_h: icon_h = size_h icon = icon.resize((icon_w, icon_h), Image.ANTIALIAS) w = int((img_w - icon_w)/2) h = int((img_h - icon_h)/2) icon = icon.convert("RGBA") img.paste(icon, (w, h), icon) # img.show() byte_io = BytesIO() img.save(byte_io, 'PNG')#加载图片流 byte_io.seek(0) return send_file(byte_io, mimetype='image/png')#返回数据流中的图片 if __name__ == '__main__': app.run(host="0.0.0.0",port=8080,threaded=True)介绍QR Code码是由日本于1994年9月研制的一-种矩阵二维码符号,它具有一维条码及其它二 维条码所具有的信息容量大、可靠性高、可表示汉字及图象多种文字信息、保密防伪性强等优点。qrcode模块是Github_上的一-个开源项目,提供了生成二维码的接口。qrcode默认使用PIL库用于生成图像。由于生成qrcode图片需要依赖Python的图像库,所以需要先安装Python图像库PIL(Python Imaging Library)。QRCode二维码版本展示QR码符号共有40种规格,分别为版本1、版本....版本40版本1的规格为21模块x21模块,版本2为25模块x25模块,以此类推,每一版本符号比前一版本每边增加4个模块,直到版本40,规格为177模块X177模块。其中最高版本40可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。由于其高密度编码,信息容量大,所以被广泛采用。QRCode方法qrcode.QRCode( version=1, error_ correction=qrcode.ERROR_ CORRECT_ _L, box_ size=10, border=4, image_ factory=None, mask_ pattern=None) 参数:* error_ correction:控制二维码纠错级别。 * ERROR_ CORRECT_ _L:大约7%或者更少的错误会被更正。 * ERROR_ CORRECT_ _M:默认值,大约15%或者更少的错误会被更正。 * ERROR_ CORRECT_ Q:大约25%或者更少的错误会被更正。 * ERROR_ CORRECT_ H:大约30%或者更少的错误会被更正。 * box_ size: 控制二维码中每个格子的像素数,默认为10。 * border:控制二维码四周留白包含的格子数,默认为4。 * image_ factory: 选择生成图片的形式,默认为PIL图像。 * mask_ pattern: 选择生成图片的的掩模。常用函数add_ _data(str,optimize=20):添加要转换的文字到data参数; 如果使用了optimize优化参数,数据将被拆分为多个块来进行优化,以找到一个长度至少为这个值的足够简洁的方式来生成二维码。设置为"0”以避免优化。make(fit=True):当fit参数为真或者没有给出version参数时,将会调用best_ fit方法来找到适合数据的最小尺寸。make_ image(ill color=None, back_ color=None,image_ factory=None):创建二维码的图像并返回,默认为PIL图像。使用如前代码,运行后访问url参数为url可传入文本,url等
2021年02月09日
92 阅读
0 评论
0 点赞
2021-02-04
Python 的基本语法与变量(3)
6、字符串在Python中字符串的使用频率非常高,而且非常受到欢迎,那么之前有说过,字符串呢需要使用引号框起来数组应该都比较熟悉,我们在输出数组的时候,比如:a = {1,2,3,4,5} print(a[0]) print(a[1]) 分别会输出1 2两个数据不做过多解释,数组的下标都是从0开始的。其实字符串也有类似的效果,例如我有这样的一串字符串变量:a = "My name is Daofengql."我同样也可以输出一个字符,如:print(a[0]) print(a[1])不止可以取单一字符,也可以取范围数据如区间,我们显示位置2-10的字符()同样是这串字符串不止取范围,还有大小写转化,取字符串长度,去除头尾空格,关键字符分割,关键字替换大小写:同一个变量。使用 .upper方法 全部大写化a = "My name is Daofengql." print(a.upper())同一个变量,使用 .lower方法 全部小写化a = "MY NAME IS DAOFENGQL." print(a.lower())取长度:使用len()函数a = "MY NAME IS DAOFENGQL." print(len(a))删除头尾空格:使用.strip方法a = " MY NAME IS DAOFENGQL. " print(a.strip())字符串分割:使用 .split方法来实现a = "He,She,It" print(a.split(",")) #分割依据 ","字符替换:使用 .replace方法,可以对字符串内的指定内容进行一个替换操作a = "He is a very bad buy." print(a.replace("bad","good")) #将bad字符替换成good7、从命令中获取数据(命令行输入)首先我们新建一个文件,我们可以命名为input_test.py打开,在里面输入如下代码:print("Enter a String:") n=input() print("My name is ", n)在上方run中 run module内容可以是任何文字,因为我们type一下这个变量输入的数据保存进变量,是以字符串类型储存的。结合前面所述,我们可以在需要的时候,进行一个强制类型转换操作最后演示一个多个输入拼接:print("Enter a String:") n1 = input() print("Enter a String:") n2 = input() print("Enter a String:") n3 = input() print("Enter a String:") n4 = input() print(n1+n2+n3+n4)
2021年02月04日
57 阅读
0 评论
0 点赞
2021-01-30
Python 的基本语法与变量(2)
4、为Python程序添加注释几乎说是所以的程序设计语言,又或者说是配置文件语言,都包含了注释语句。当然了,python也不例外。与几乎所有程序语言类似,Python也不会解释包含在程序块中的注释语句。注释就是对代码的解释和说明,其目的是让人们能够更加轻松地了解代码。注释是编写程序时,写程序的人给一个语句、程序段、函数等的解释或提示,能提高程序代码的可读性。注释信息可以不只有一行,可以是多汗。开始和结尾处的引号可以是双引号,也可以是单引号,甚至是三引号。更多时候,我们会在程序逻辑的重要节点上添加注释语句,Python中单行注释以 # 开头,例如::# 这是一个注释 print("Hello, World!")多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来,例如:1、单引号(''') #!/usr/bin/python3 ''' 这是多行注释,用三个单引号 这是多行注释,用三个单引号 这是多行注释,用三个单引号 ''' print("Hello, World!")2、双引号(""") #!/usr/bin/python3 """ 这是多行注释,用三个双引号 这是多行注释,用三个双引号 这是多行注释,用三个双引号 """ print("Hello, World!")3、特殊注释比如 #! /usr/bin/python 这句注释的意思就是告诉LINUX/UNIX去找到python的解释器,大部分文件都不需要这个,只在要求也执行的文件中添加。关于蛋疼的中文编码: # coding = utf-8 【注:这句代码蛋疼的必须放在第二行啊,而且多个空格都不行啊!】同其他语言一样,print("hello") 和 #coding... """coding""" '''coding''' print("hello")的运行效果是完全一样的。5、Python的变量变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。变量存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。Python 中的变量赋值不需要类型声明。每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号 = 用来给变量赋值。等号 = 运算符左边是一个变量名,等号 = 运算符右边是存储在变量中的值。我们启动一个交互式模式的页面来演示。 #!/usr/bin/python # -*- coding: UTF-8 -*- counter = 100 # 赋值整型变量 miles = 1000.0 # 浮点型 name = "John" # 字符串 print (counter) print (miles) print (name) 当然我们也可以一次性对他们进行赋值a = b = c = 114514 a,b,c = 123,1.2,"道峰"标准数据类型在内存中存储的数据可以有多种类型。例如,一个人的年龄可以用数字来存储,他的名字可以用字符来存储。Python 定义了一些标准类型,用于存储各种类型的数据。Python有五个标准的数据类型:Numbers(数字)String(字符串)List(列表)Tuple(元组)Dictionary(字典)
2021年01月30日
36 阅读
0 评论
0 点赞
2021-01-03
Python获取NGINX连接数(ngx_stub_status)
最近在写网站的自动化运营平台,其中有一个CC攻击报警的系统,需要获取到网络服务器实时的连接数来判断是否遭受到攻击。因为服务器资源还是比较充裕,所以只需要获取当前的并发连接数即可。但有一个问题,ngx_stub_status插件是以http页面的形式输出的。而且内容还是非json格式。于是就用到urllib模块,对监控地址进行请求import urllib.parse import urllib.request def data_re(): url = "https://youdomain.com/your-url" headers = { # 存储任意的请求头信息 'User-Agent': 'Automated_blog_server_monitoring_platform version1.0.0', 'Referer':url } request = urllib.request.Request(url=url, headers=headers) response = urllib.request.urlopen(request) the_page = response.read().decode("unicode_escape").splitlines() #从http读取目标页面的数据分行存入List变量中 connect = int(str(the_page[0]).split(':')[1].strip()) #处理链接数为int类型的变量 print(connect)可以同理获取到队列等待数等。代码原理:首先请求页面获取页面内容,然后对页面内容进行拆行解析。每一行为一个元素。使用split()对字符串进行二次拆解分割。最终去除多余的空格,解析出ngx_stub_status的Active connections同理可以略微改动代码获取到总处理数,队列等待数等数据。
2021年01月03日
116 阅读
0 评论
0 点赞
2021-01-02
Python 的基本语法与变量(1)
Python 简介Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。 Python 发展历史Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。Python 2.7 被确定为最后一个 Python 2.x 版本,它除了支持 Python 2.x 语法外,还支持部分 Python 3.1 语法。 Python 特点1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。2.易于阅读:Python代码定义的更清晰。3.易于维护:Python的成功在于它的源代码是相当容易维护的。4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。8.数据库:Python提供所有主要的商业数据库的接口。9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。10.可嵌入:你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。python的安装Python可应用于多平台包括 Linux 和 Mac OS X。你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等等。)Win 9x/NT/2000Macintosh (Intel, PPC, 68K)OS/2DOS (多个DOS版本)PalmOSNokia 移动手机Windows CEAcorn/RISC OSBeOSAmigaVMS/OpenVMSQNXVxWorksPsionPython 同样可以移植到 Java 和 .NET 虚拟机上。Ubuntu/Debian : sudo apt-get install python3Centos/RedHat:yum -y install gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel yum -y install zlib* yum -y install python-setuptools yum -y install python3Windows:前往https://www.python.org/downloads/windows/选择版本下载集成开发环境(IDE:Integrated Development Environment): PyCharm(可选)PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/Python基本语法与变量1、Python解释器交互式编程如下交互式界面即直接输入Python命令不输入文件名,或默认ide的页面这样就出现了解释器的 >>> 提示符 ,如上图即为默认图形IDE的交互模式可以使用exit() Ctrl+Z Ctrl+D的方式退出2、Python的保留字和标识符标识符:以英文大小写或小写字母或下划线“_”开始,后面可跟随数个字母数字或下划线Python不允许使用特殊标点符号出现在标识符里头,如:@%$等,且Python区分大小写,意义相同,但是大小写不同的两个标识符是完全不同的,如man和Man当标识符用作模块名时,应尽量短小,并且全部使用小写字母,可以使用下划线分割多个字母,例如 game_mian、game_register 等。当标识符用作包的名称时,应尽量短小,也全部使用小写字母,不推荐使用下划线,例如 com.mr、com.mr.book 等。当标识符用作类名时,应采用单词首字母大写的形式。例如,定义一个图书类,可以命名为 Book。模块内部的类名,可以采用 "下划线+首字母大写" 的形式,如 _Book;函数名、类中的属性名和方法名,应全部使用小写字母,多个单词之间可以用下划线分割;常量命名应全部使用大写字母,单词之间可以用下划线分割;除了注意标识符的规范外,还有保留关键字不能与标识符相同。保留关键字:保留关键字可通过运行下列代码查看import keyword keyword.kwlist所以:andasassertbreakclasscontinuedefdelelifelseexceptfinallyforfromFalseglobalifimportinislambdanonlocalnotNoneorpassraisereturntryTruewhilewithyield都是保留关键字,但是前文有说道,Python是区分大小写的,如果非要使用,可以使用大写混合的方法,如if和IF3、Python语句的缩进Pyhton语言与Java、C#等编程语言最大的不同点是,Python代码块使用缩进对齐表示代码逻辑,而不是使用大括号。这对习惯用大括号表示代码块的程序员来说,确实是学习Python的一个障碍。Python每段代码块缩进的空白数量可以任意,但要确保同段代码块语句必须包含相同的缩进空白数量。例如:建议在代码块的每个缩进层次使用单个制表符或两个空格或四个空格 , 切记不能混用。否则可能出现如图这种这种错误(将print前的制表符删除了):
2021年01月02日
21 阅读
1 评论
0 点赞