python学习之模块导入,操作邮件,redis
python基础学习06
模块导入
导入模块的顺序
1.先从当前目录下找
2.当前目录下找不到,再从环境变量中找,如果在同时在当前目录和环境变量中建立相同的py文件,优先使用当前目录下的
导入模块的实质
导入的python文件运行一次,并放到内存中,之后可以调用里面的变量或者方法
导入的python文件导入过一次后如果运行时遇到相同的文件会过滤掉,如果强行要再加载一次可以使用如下方法
import os
import importlib
importlib.reload(os)
py环境变量 环境变量不是系统的环境变量而是python自带的环境变量,存在python目录中
查找环境变量
1.
import sys
print(sys.path) #查看python的环境变量路径,py文件可以放在一些目录下就导入到环境变量中了
2.
pycharm→project→external library中也可以找到环境变量目录
添加环境变量
1.
import sys
sys.path.append('xxxx路径文件') #对于一些不经常使用的py文件,可以临时添加环境变量,但是要在开头定义,再使用
sys.path.insert(0,'xxxx路径文件') #指定要py文件优先查找
2.
pycharm→project→文件右键mark Directory as→sources root
导入模块的使用
import longsize as e as相当于模块longsize可以用e来替换,只局限于在此py文件中调用
from xxx import xx1,xx2,xx3... 导入xxx中从xx1,xx2,xx3
from xxx.name import xx1 导入xxx中的name方法从xx1
from xxx import * 导入xxx中的所有方法,但是*不实用
python操作邮件
安装
pip install yagmail
安装yagmail模块
操作
import yagmail
#首先要开启POP3/SMTP服务
MAIL_INFO = {
'user':'70xxxxxx@qq.com', #发送者邮箱
'password':'r******h', #发送者密码,如果是qq是授权码
'host':'smtp.qq.com', #host为qq第三方服务器
"port": "",
#'smtp_ssl':False#发件箱是qq邮箱的话,改成True 好像现在用不了了
} emailList=["2xxxx94@qq.com"]
email = yagmail.SMTP(**MAIL_INFO)
email.send(to=emailList,subject="My name is sdf",contents="Today is 20180605",cc="xxxx@qq.com",attachments='m2.py')
#to=收件人列表,subject=邮件标题,contents=邮件正文,cc=邮件抄送人,attachments=附件
python操作redis redis是非关系型数据库,数据存在内存中
import redis
ip='ip'
pwd= 'pwd'
r= redis.Redis(host=ip,password=pwd,port=6379,db=1) #固定格式
res= r.get('key') #获取key中value
b= res.decode() #把二进制转成字符串
r.flushdb() #清除db所有数据key
r.set('a','bbb',60) #新增和修改key和value,TTL:计时器60秒后清除key
r.set('cc:b','bbb',60) #冒号前面的是文件夹名
r.keys() #获取所有的key
r.keys('session*') #支持模糊匹配和过滤
r.delete('a') #删除指定的key
r.ttl('key名') #打印key中的ttl剩余时间
r.expire('woshirainbol', '400') #为key设置ttl时间
r.mset(key1='value1', key2='value2',。。。。。) #批量增加
r.mget(key1='value1', key2='value2',。。。。。) #批量获取
#哈希类型 两层字典
r.hset('bigkey','key','value') #在bigkey中嵌套key和value
r.hget('bigkey','key') #指定在bigkey中获取key中的值
r.hdel('bigkey','key') #删除指定的key
res = r.hgetall('bigkey') #指定获取bigkey中的所有key值
#获取上面二进制所有数据转成正常字典格式
new ={}
for k,v in res.item():
new[k.decode()] = v.decode()
print(new)
#或者在最上方r中加入参数decode_responses=True,此参数不需要decode http://www.cnblogs.com/melonjiang/p/5342505.html #大佬笔记
https://www.cnblogs.com/RainBol/p/9522727.html #redis学习笔记
版权声明:本文原创发表于 博客园,作者为 RainBol本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。
python学习之模块导入,操作邮件,redis的更多相关文章
- Python学习--Selenium模块学习(2)
Selenium的基本操作 获取浏览器驱动寻找方式 1. 通过手动指定浏览器驱动路径2. 通过 `$PATH`环境变量找寻浏览器驱动 可参考Python学习--Selenium模块简单介绍(1) 控制 ...
- Python学习--Selenium模块
1. Python学习--Selenium模块介绍(1) 2.Python学习--Selenium模块学习(2) 其他: 1. Python学习--打码平台
- Python学习---重点模块的学习【all】
time [时间模块] import time # print(help(time)) # time模块的帮助 print(time.time()) # 时间戳 print(time.cloc ...
- 【Python开发】Python之re模块 —— 正则表达式操作
Python之re模块 -- 正则表达式操作 这个模块提供了与 Perl 相似l的正则表达式匹配操作.Unicode字符串也同样适用. 正则表达式使用反斜杠" \ "来代表特殊形式 ...
- Python 的 time 模块导入及其方法
时间模块很重要,Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能,讲解一下Python 的 time 模块导入及其方法. 1,time 模块导入 import time; # ...
- python学习——常用模块
在学习常用模块时我们应该知道模块和包是什么,关于模块和包会单独写一篇随笔,下面先来了解有关在python中的几个常用模块. 一.什么是模块 常见的场景:一个模块就是一个包含了python定义和声明的文 ...
- Python学习之模块基础
模块就是程序 编写以下简单代码 print('hello python') 并将py文件保存在c盘的python(假设新建)文件下,通过pycharm的Terminal 或者windom命令窗口调出p ...
- Python学习:模块初识、数据类型
1.模块初识 在Python中,模块分为两种: (1)标准库 标准库无需安装,只要在使用的时候import就可以使用了 (2)第三方库 第三方库必须下载安装之后才能够引入使用 下面介绍两个基本的模块: ...
- Python学习(22):模块
转自 http://www.cnblogs.com/BeginMan/p/3183656.html 一.模块基础 1.模块 自我包含,且有组织的代码片段就是模块 模块是Pyhon最高级别的程序组织单元 ...
随机推荐
- 【GStreamer开发】GStreamer基础教程10——GStreamer工具
目标 GStreamer提供了一系列方便使用的工具.这篇教程里不牵涉任何代码,但还是会讲一些有用的内容: 如何在命令行下建立一个pipeline--完全不使用C 如何找出一个element的Capab ...
- python 调 java(胶水就是胶水)
java门外汉用python调java, 一.安装java环境(linux) 1.首先要去下载好JDK,Java SE 8的官方网址是http://www.oracle.com/technetwork ...
- linux 给运行程序指定动态库路径
1. 连接和运行时库文件搜索路径到设置 库文件在连接(静态库和共享 库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的.一般 Linux 系统把 /lib 和 /usr/li ...
- Cannot assign requested address的解决办法
今天想试一下redis,写了个程序,对redis连续进行100000访问,却出现以了Cannot assign requested address的问题,我起先是以为是redis的问题(可能承受不了这 ...
- Bean配置
1.xml配置(摘抄自:https://www.cnblogs.com/zyx1301691180/p/7665971.html) 一.setter方法配置Bean: 1.创建一个 Spring Be ...
- 多线程(8) — ThreadLocal
ThreadLocal是一个线程的局部变量,也就是只有当前线程可以访问,是线程安全的.为每一个线程分配不同的对象,需要在应用层面保证ThreadLocal只起到简单的容器作用. ThreadLocal ...
- C++语言动态创建对象
焦头烂额的考试月终于过去了,终于有时间能停下来思考记录一下这一个月学过的东西,首先先总结一下,在自己仿写魂斗罗游戏时遇见的问题之一,人物在移动的时候如何去判断什么时候掉入水中显示水中画面,什么时候敌人 ...
- mininet:使用vxlan连接两台虚拟机的网络topo
需改虚拟机的网络适配器,将其改为host-only 尝试ping宿主机ip地址,此时能够ping同与虚拟机相连的虚拟网卡ip地址,无法ping同其他网卡ip地址 在虚拟机和宿主机中创建网络topo 在 ...
- Scala Actor入门
介绍 Scala的Actor类似于Java中的多线程编程.但是不同的是,Scala的Actor提供的模型与多线程有所不同.Scala的Actor尽可能地避免锁和共享状态,从而避免多线程并发时出现资源争 ...
- oracle笔记之计算年龄、工龄和TRUNC
方法一:利用months_between 函数计算 SELECT TRUNC(months_between(sysdate, birthday)/12) AS agefrom dual; 方法二:日期 ...