python3小技巧

flask返回json响应

一般并不直接使用json模块的dumps()、load()等方法,因为Flask通过包装这些方法提供了更方便的jsonify()函数。借助jsonify()函数,仅需要传入数据或参数,它会对我们传入的参数进行序列化,转换成JSON字符串作为响应的主体,然后生成一个响应对象,并且设置正确的MIME类型。

from flask import jsonify

@app.route('/foo')
def foo():
    return jsonify(name='Green Li', gender='male')

jsonify()函数也可以接受普通参数或者直接传入字典,列表或元组,例如:jsonify({'name':'Green Li', 'gender':'male'})

上面两种形式的返回值都是这样的json字符串:'{"gender":"male","name":"GreyLi"}'

jsonify()函数依赖于上下文,函数内部调用中使用了current_app变量.所以只能在视图函数中使用。

使用python-dotenv 来管理flask环境变量

pip install python-dotenv
在项目根目录下分别创建两个文件:.env.flaskenv..flaskenv用来管理和flask相关的公开环境变量,例如FLASK_APP=
.env用来存储包含敏感信息的环境变量,例如email的账号密码.
每行定义一个变量. 注释用#开头.

.env包含敏感信息,除非是私有项目,否则绝对不能提交到Git仓库中, 需要把它的名称添加到.gitignore文件中

深度复制拷贝

import copy
c = copy.deepcopy(a)  # 把a复制给c

复制文件

from shutil import copyfile

copyfile(src, dst)

src:源文件
dst:目标文件

如: copyfile('./test.txt', '/home/gaosiqi/tmp/test.txt')

使用requirement.txt导入库

  1. 拷贝当前环境的第三方库 pip freeze >requirements.txt
  2. 在待克隆项目里, 下载上一步拷贝的库 pip install -r requirements.txt

修改pip默认python版本

  1. which pip查看pip文件路径
  2. which python3,查看当前使用的python3路径
  3. image.png

mac修改python默认为python3

  1. which python3找到python3的路径/usr/local/bin/python3
  2. 修改配置文件: vim ~/.zshrc ,在最后添加一行:alias python=/usr/local/bin/python3

修改csv文件指定位置内容

#读取文件   
mm = csv.reader(open("./projectInfo.csv"))  
lines = [ l for l in mm]    
print(lines)   # 输出一个二维数组: [['appId', 'interfaceId', 'serviceId', 'owner', 'cookie', 'req_url'], ['72', '460', '1905', '5832', '3333', '55']]
    
#修改指定位置 
lines[1][0] = '882'
lines[1][1] = '460'
lines[1][2] = '1905'    
print(lines)
    
#写回文件   
writer = csv.writer(open('./projectInfo.csv','w'),lineterminator='\n')
writer.writerows(lines)

字符串插值方式,f-string

user= "jane done"
action = "buy"
log_mess = f'user jefje {user} ejfesfhah  {action} jwefjeasfj'
print(log_mess)  #user jefje jane done ejfesfhah  buy jwefjeasfj

Python 3提供了pathlib作为处理文件路径字符串的便捷工具库

from pathlib import Path

root = Path('post_sub_folder')
print(root)  #post_sub_folder
path  = root / 'happ_uer'
print(path)  #post_sub_folder/happ_uer 
print(path.resolve())  #绝对路径 /private/var/folders/bn/2xxxn/T/CodeRunner/post_sub_folder/happ_uer

虚拟环境

  • 安装包: pip install virtualenv
  • 创建虚拟环境: virtualenv venv || python3 -m venv venv
  • 激活虚拟环境: source venv/bin/activate (windows:venv\Scripts\activate)
  • 关闭虚拟环境: deactivate

在 Python 3 中,虚拟环境由Python 标准库中的 venv 包原生支持。
Ubuntu Linux 系统预装的 Python 3,标准库中没有 venv 包。执行下述命令安装 python3-venv 包: $ sudo apt-get install python3-venv


Flask 1.0 设置环境变量的方法

在Flask1.0 后的版本中,在代码中添加 Debug=True 或者 在 Config 中添加DEBUG=True 来开启Debug 的模式可能已经失效 .

  • windows powershell:$env:FLASK_DEBUG = 1$env:FLASK_ENV = "development"$env:FLASK_APP = "flasky.py"

内网使用Bootstrap无法渲染

bootstrap默认使用外网cdn,,如果无法联网就会导致这种情况。可以在初始化之前加一行代码,使之加载本地的cdn

app.config['BOOTSTRAP_SERVE_LOCAL']=True #默认本地加载
bootstrap.init_app(app)

报错解决方式

pip相关

从自己搭的源下载flask-wtf时,提示ERROR: Cannot unpack file /private/var/folders/89/t90wx2gs44dbv4_sx6vdj2mw0000gn/T/pip-unpack-gmrl3v_9/simple.htm (downloaded from /private/var/folders/89/t90wx2gs44dbv4_sx6vdj2mw0000gn/T/pip-req-build-5znzrjo3, content-type: text/html); cannot detect archive format ERROR: Cannot determine archive format of /private/var/folders/89/t90wx2gs44dbv4_sx6vdj2mw0000gn/T/pip-req-build-5znzrjo3

解决: 安装命令由-i改为--index-url :pip3 install --index-url http://xx.xx.xx.xx:8081/repository/my_group/simple flask-wtf --trusted-host xx.xx.xx.xx


websocket相关

提示: ImportError: cannot import name 'create_connection' from 'websocket'
原因: 在使用create_connection之前要安装 websocket_client
解决: pip install websocket_client


删除字符串两端引号

a='"string"'
print(a)  # => "string"
b=eval(a)  
print(b)  #=>string

提取字符串内指定字符

import re
str = "a123b"
print re.findall(r"a(.+?)b",str)#输出['123']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值