Python3其他部分:
1.正则表达式:
compile 函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。
re 模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。
正则表达式规则、模式、修饰符等等可见:https://www.runoob.com/regexp/regexp-tutorial.html
- re.match()函数
- re.search()函数
- re.sub()函数
- 详细用法见:https://www.runoob.com/python3/python3-reg-expressions.html
compile 函数: compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
见:https://www.runoob.com/python3/python3-reg-expressions.html
其他函数:
- findall
- re.finditer
- re.split
模式、修饰符、实例(略)
2.CGI编程:
CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。CGI程序可以是Python脚本,PERL脚本,SHELL脚本,C或者C++程序等。 在windows/linux下配置apache以cgi方式支持python,可以自行百度博客: https://blog.csdn.net/weixin_33834910/article/details/92648791 https://www.cnblogs.com/zhidong123/p/6491938.html
利用html的form标签内name和value来操作表单:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<form action="/cgi-bin/radiobutton.py" method="post" target="_blank">
<input type="radio" name="site" value="runoob" /> 菜鸟教程
<input type="radio" name="site" value="google" /> Google
<input type="submit" value="提交" />
</form>
</body>
</html>
import cgi, cgitb
form = cgi.FieldStorage()
if form.getvalue('site'):
site = form.getvalue('site')
else:
site = "提交数据为空"
print ("Content-type:text/html")
print ()
print ("<html>")
print ("<head>")
print ("<meta charset=\"utf-8\">")
print ("<title>菜鸟教程 CGI 测试实例</title>")
print ("</head>")
print ("<body>")
print ("<h2> 选中的网站是 %s</h2>" % site)
print ("</body>")
print ("</html>")
检索cookie:
import os
import http.cookies
print ("Content-type: text/html")
print ()
print ("""
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<h1>读取cookie信息</h1>
""")
if 'HTTP_COOKIE' in os.environ:
cookie_string=os.environ.get('HTTP_COOKIE')
c= http.cookies.SimpleCookie()
c.load(cookie_string)
try:
data=c['name'].value
print ("cookie data: "+data+"<br>")
except KeyError:
print ("cookie 没有设置或者已过去<br>")
print ("""
</body>
</html>
""")
文件上传:
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
fileitem = form['filename']
if fileitem.filename:
fn = os.path.basename(fileitem.filename)
open('/tmp/' + fn, 'wb').write(fileitem.file.read())
message = '文件 "' + fn + '" 上传成功'
else:
message = '文件没有上传'
print ("""\
Content-Type: text/html\n
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
<p>%s</p>
</body>
</html>
""" % (message,))
3.MySQL:
只要熟悉sql语法加之一些python函数就能掌握。有两种操作方法。
(1)mysql-connector驱动器先下载再检查是否安装成功。
import mysql.connector
连接数据库并创建数据库:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
passwd="yourpassword"
)
print(mydb)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE runoob_db")
可以使用 ALTER TABLE 来给表添加主键。
插入多条数据:
- executemany() 方法
- mydb.commit() :数据表内容有更新,必须使用到该语句!
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()
sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
val = [
('Google', 'https://www.google.com'),
('Github', 'https://www.github.com'),
('Taobao', 'https://www.taobao.com'),
('stackoverflow', 'https://www.stackoverflow.com/')
]
mycursor.executemany(sql, val)
mydb.commit()
print(mycursor.rowcount, "记录插入成功。")
查询数据:
- fetchall() 获取所有记录
- selec语句
- fetchone() 方法:只读一条数据
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="123456",
database="runoob_db"
)
mycursor = mydb.cursor()
mycursor.execute("SELECT * FROM sites")
myresult = mycursor.fetchall()
for x in myresult:
print(x)
安全角度:
为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义查询的条件。
参考:https://zhuanlan.zhihu.com/p/391303946 https://www.cnblogs.com/greatfish/p/6067849.html
(2)PyMySQL 驱动: 用于连接mysql的一个库,安装略。 增删改查见:https://www.runoob.com/python3/python3-mysql.html
4.网络编程(底层):
浅谈:https://www.runoob.com/python3/python3-socket.html
5.SMTP发送邮件:
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
如果我们本机没有 sendmail 访问,也可以使用其他服务商的 SMTP 访问(QQ、网易、Google等)。
实例:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
mail_host="smtp.XXX.com"
mail_user="XXXX"
mail_pass="XXXXXX"
sender = 'from@runoob.com'
receivers = ['429240967@qq.com']
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("菜鸟教程", 'utf-8')
message['To'] = Header("测试", 'utf-8')
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25)
smtpObj.login(mail_user,mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print ("邮件发送成功")
except smtplib.SMTPException:
print ("Error: 无法发送邮件")
我们使用三个引号来设置邮件信息,标准邮件需要三个头部信息: From, To, 和 Subject ,每个信息直接使用空行分割。
我们通过实例化 smtplib 模块的 SMTP 对象 smtpObj 来连接到 SMTP 访问,并使用 sendmail 方法来发送信息。
其他:
- 发送HTML格式的邮件
- 发送带附件的邮件
- 在 HTML 文本中添加图片
- 使用第三方 SMTP 服务发送(qq,网易,谷歌)
6.多线程(底层):
介绍:
还没学操作系统呢,留着之后看:https://www.runoob.com/python3/python3-multithreading.html
7.XML 解析:
Python 对 XML 的解析: 常见的 XML 编程接口有 DOM 和 SAX,这两种接口处理 XML 文件的方式不同,当然使用场合也不同。
Python 有三种方法解析 XML,SAX,DOM,以及 ElementTree:
1.SAX (simple API for XML ) Python 标准库包含 SAX 解析器,SAX 用事件驱动模型,通过在解析 XML 的过程中触发一个个的事件并调用用户定义的回调函数来处理 XML 文件。
2.DOM(Document Object Model) 将 XML 数据在内存中解析成一个树,通过对树的操作来操作 XML。(js中学过的)
https://www.runoob.com/python3/python3-xml-processing.html
8.JSON 数据解析:
- json.dumps(): 对数据(json文件)进行编码。
- json.loads(): 对数据进行解码。
import json
data = {
'no' : 1,
'name' : 'Runoob',
'url' : 'http://www.runoob.com'
}
json_str = json.dumps(data)
print ("Python 原始数据:", repr(data))
print ("JSON 对象:", json_str)
实例二:
9.日期和时间:
Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间。 时间间隔是以秒为单位的浮点小数。 每个时间戳都以自从 1970 年 1 月 1 日午夜(历元)经过了多长时间来表示。
- 时间元组(struct_time)
- strftime()、asctime()方法
- 参考:https://www.runoob.com/python3/python3-date-time.html
10.MongoDB:
MongoDB 是目前最流行的 NoSQL 数据库之一,使用的数据类型 BSON(类似 JSON)。
等之后学了MongoDB数据库后再细看。
https://editor.csdn.net/md?articleId=120399307
11.urllib:
用于操作网页 URL,并对网页的内容进行抓取处理。(网络爬虫可以用到) https://www.runoob.com/python3/python-urllib.html
uWSGI 安装配置和python框架与pip
最后推荐两篇python学习路线和资源指导(非常详细):
- https://mp.weixin.qq.com/s/hEnimh3uGGdN9yX4beWn-A
- https://mp.weixin.qq.com/s/GrgHEx0GPOrJXYv0u0yHVg
|