python发邮件需要掌握两个模块的用法,smtplib和email,这俩模块是python自带的,只需import即可使用。smtplib模块主要负责发送邮件,email模块主要负责构造邮件。smtplib模块主要负责发送邮件:是一个发送邮件的动作,连接邮箱服务器,登录邮箱,发送邮件(有发件人,收信人,邮件内容)。email模块主要负责构造邮件:指的是邮箱页面显示的一些构造,如发件人,收件人,主题,正文,附件等。1.smtplib模块smtplib使用较
系统 2019-09-27 17:46:47 1967
花了些工夫将碎片网部署到了SAE,中途遇到各类问题。感觉SAE看上去很美,实际上却并不是太成熟(至少python版如此)。下面记录下我遇到的一些主要问题以及解决方法。django版本问题Django1.4都即将发布了,SAE平台自带的SAE版本依旧为1.2x。为使用django1.3版本,你需上传自己的django。具体做法可参考SAE手册中的runtime.html#virtualenv日志模块出错最先遇到的是日至模块的问题。错误显示AdminEmail
系统 2019-09-27 17:46:12 1967
在任何编程语言中,函数的应用主要出于以下两种情况:1.代码块重复,这时候必须考虑用到函数,降低程序的冗余度2.代码块复杂,这时候可以考虑用到函数,增强程序的可读性当流程足够繁杂时,就要考虑函数,及如何将函数组合在一起。在Python中做函数设计,主要考虑到函数大小、聚合性、耦合性三个方面,这三者应该归结于规划与设计的范畴。高内聚、低耦合则是任何语言函数设计的总体原则。1.如何将任务分解成更有针对性的函数从而导致了聚合性2.如何设计函数间的通信则又涉及到耦合
系统 2019-09-27 17:45:56 1967
#堆排序defheap_sort(arr):root=len(arr)//2-1while(root>=0):heap_adjust(arr,root,len(arr)-1)root=root-1#此时生成的大顶堆,满足每个根节点为子树中最大,因此,之后只需要对最顶的子树进行调整i=len(arr)-1whilei>=0:arr[0],arr[i]=arr[i],arr[0]heap_adjust(arr,0,i-1)i=i-1defheap_adjust
系统 2019-09-27 17:45:50 1967
装饰器:概念:把一个函数当作参数传递给一个函数,返回一个替代版的函数本质上就是一个返回函数的函数“在不改变原函数的基础上,给函数增加功能”@符号,那只是一个简短的方式来生成一个被装饰的函数defpaint(func):参数是一个函数definner():print('#########')这个的整个部分就都是装饰器func()returninner@paint这个就是函数戴帽子,也就是装饰器deffunc():print('haveaniceday!!')
系统 2019-09-27 17:45:41 1967
1.文件的读取和显示方法1:复制代码代码如下:f=open(r'G:\2.txt')printf.read()f.close()方法2:复制代码代码如下:try:t=open(r'G:\2.txt')printt.read()finally:ift:t.close()方法3:复制代码代码如下:withopen(r'g:\2.txt')asg:forlineing:printlinepython虽然每次打开文件都要关闭,但是可能会由于异常导致未关闭,因此我们
系统 2019-09-27 17:45:38 1967
1.编译nginx在网上买了一本《实战nginx-取代Apache的高性能服务器》,写的比较浅,主要是些配置方面的东西,不过却正是目前我所需要的。由于需要支持https和rewrite,所以除了nginx的源码之外,又下载了openssl-0.9.8r.tar.gz和pcre-8.12.tar.gz,把他们和nginx-1.0.4.tar.gz放到同一个目录。为了方便编译,笔者写了一个脚本,代码如下:#!/bin/bash#================
系统 2019-09-27 17:38:47 1967
在python的lib目录里有一个:this.py,它其实是隐藏着一首诗,源码如下:复制代码代码如下:s="""GurMrabsClguba,olGvzCrgrefOrnhgvshyvforggregunahtyl.Rkcyvpvgvforggregunavzcyvpvg.Fvzcyrvforggregunapbzcyrk.Pbzcyrkvforggregunapbzcyvpngrq.Syngvforggregunaarfgrq.Fcnefrvforggr
系统 2019-09-27 17:38:46 1967
如果某类里没有__init__方法函数,通过类名字创建的实例对象为空,切没有初始化;如果有此方法函数,通常作为类的第一个方法函数,有点像C++等语言里的构造函数。classCa:def__init__(self,v):#注意前后各两个下划线self.name=vdefpr(self):print"a--->",self.nameia=Ca("Jeapedu")#本质调用的是__init__方法函数ia.pr()Ca.pr(ia)输出结果a--->Jeape
系统 2019-09-27 17:38:41 1967
myPhoneBook2.py#!/usr/bin/python#-*-coding:utf-8-*-importreclassPhoneBook(object):'''这是一个电话簿脚本。该脚本能够实现AddContact:添加联系人信息ShowContact:查找姓名显示联系人SaveContacts:存储联系人到TXT文档(存储格式――姓名:号码/号码)LoadContacts:从txt文档中载入联系人'''def__init__(self):sel
系统 2019-09-27 17:38:30 1967
本来是想写一个东西可以直接调用TortoiseSVN保存当前代码到一个分枝下的。可惜调用SVN的部分还在研究。就先写了目录拷贝的部分。如果有喜欢研究Python的童鞋愿意提供想法或者建议的话,这里先谢谢了。:)就目录拷贝的部分,思想很简单。读配置文件中的配置信息。生成一个项目名称加日期时间组成的文件夹名为分枝名称。把当前项目下的全部内容拷贝到这个目录下。然后要做的研究就是调用TortoiseSVN命令嵌入这部分代码。现在看代码:1.读取配置文件配置文件很简
系统 2019-09-27 17:38:23 1967
1、python多进程编程背景python中的多进程最大的好处就是充分利用多核cpu的资源,不像python中的多线程,受制于GIL的限制,从而只能进行cpu分配,在python的多进程中,适合于所有的场合,基本上能用多线程的,那么基本上就能用多进程。在进行多进程编程的时候,其实和多线程差不多,在多线程的包threading中,存在一个线程类Thread,在其中有三种方法来创建一个线程,启动线程,其实在多进程编程中,存在一个进程类Process,也可以使用
系统 2019-09-27 17:38:21 1967
使用python生成随机验证码的方法有很多种,今天小编给大家分享两种方法,大家可以灵活运用这两种方法,设计出适合自己的验证码方法。方法一:利用range方法,对于range方法不清楚的同学,请参考文章《python开发的range()函数》#-*-coding:utf-8-*-importrandomdefgenerate_verification_code(len=6):'''随机生成6位的验证码'''#注意:这里我们生成的是0-9A-Za-z的列表,当
系统 2019-09-27 17:37:39 1967
基础REST定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的Web服务,包括使用不同语言编写的客户端如何通过HTTP处理和传输资源状态。如果考虑使用它的Web服务的数量,REST近年来已经成为最主要的Web服务设计模型。事实上,REST对Web的影响非常大,由于其使用相当方便,已经普遍地取代了基于SOAP和WSDL的接口设计。REST这个概念于2000年由RoyFielding在就读加州大学欧文分校期间在学术论文“Architectural
系统 2019-08-29 23:46:34 1967
三个角色:环境(Context)角色:持有一个Strategy类的引用。抽象策略(Strategy)角色:通常由一个接口或者抽象类实现,此角色给出所有的具体策略类所需的接口。具体策略(ConcreteStrategy)角色:包装相关算法和行为为了帮助理解,我们举例来说明。我们的程序要实现加密功能。加密有一个加密算法,加密算法有很多种,比如MD5,DES等,我们的程序需要实现这个功能,就是可以让用户选择不同的加密算法进行加密。这个过程我们可以用Strateg
系统 2019-08-29 23:23:58 1967