当前位置:网站首页>(8) requests、os、sys、re、_thread
(8) requests、os、sys、re、_thread
2022-08-02 03:24:00 【隐身的菜鸟】
requests
速查
http方法
GET 获取资源
POST 传输实体主体
PUT 传输文件
HEAD 获得响应报文首部
DELETE 删除文件
OPTIONS 查询支持的方法
TRACE 追踪路径
CONNECT 要求用隧道协议连接代理
LINK 建立和资源之间的连接
UNLINK 断开连接关系
requests模块中的http方法
res = requests.get()
res = requests.post()
res = requests.put()
res = requests.delete()
res = requests.head()
res = requests.options()
参数
GET参数 params
HTTP头部 headers
POST参数 data
文件 files
Cookies cookies
重定向处理 allow_redirects = False/True
超时 timeout
证书验证 verify = False/True
工作流(延迟下载) stream=False/True
事件挂钩 hooks=dict(response=)
身份验证 auth=
代理 proxies=
对象方法
URL .url
text .text
编码 .encoding|.encoding=
响应内容 .content
Json解码器 .json
原始套接字响应 .raw|.ras.read()(需要开启stream=True)
历史响应代码 .history
抛出异常 .raise_for_status()
查看服务器响应头 .headers
查看客户端请求头 .request.headers
查看Cookie .cookies
身份验证 .auth=
更新 .update
解析连接字头 .links[]
相关方法
获取正文 res.text
获取响应状态码 res.status_code
获取响应编码 res.encoding
以二进制方式获取响应正文 res.content
获取响应头部 res.headers
获取提交的url(包括get参数) res.url
获取发送到服务器的头信息 res.request.headers
os模块:
os模块是Python标准库中整理文件和目录最为常用的模块,该模块用来处理文件和目录。
#文件操作-------------------------------------------------------------------------------------
os.mkdir() 新建目录
os.makedirs() 创建多级目录
os.rename() 重命名文件
os.getcwd() 获取当前工作目录
os.chdir() 改变当前工作目录
os.listdir() 列出指定目录下所有文件
os.remove() 删除文件
os.removedirs() 删除多级目录
os.unlink() 删除文件
os.rmdir() 删除空目录(使用shutil.rmtree(),删除非空目录)
os.stat(file) 获取文件或文件夹的信息,返回值为元组
os.chmod(file) 修改文件权限
os.utime(file) 修改文件时间戳
#--------------------------------------------------------------------------------------------
os.name(file) 获取操作系统标识
os.system() 执行操作系统命令
os.execvp() 启动一个新进程
os.fork() 获取父进程ID,在子进程返回中返回0
os.execvp() 执行外部程序脚本(Uinx)
os.spawn() 执行外部程序脚本(Windows)
os.access(path, mode) 判断文件权限(详细参考cnblogs)
#os.path模块----------------------------------------------------------------------------------
os.path.abspath(name) 获得绝对路径
os.path.basename(filename) 返回文件路径的文件名
os.path.commonprefix(list) 返回list(多个路径)中,所有path最长的路径
os.path.dirname(filename) 返回文件路径的目录部分
os.path.exists() 判断文件或目录是否存在
os.path.getatime() 返回最近访问时间 浮点型
os.path.getmtime() 返回上一次修改时间 浮点型
os.path.getctime() 返回文件创建时间 浮点型
os.path.getsize() 返回文件大小 字节单位
os.path.isabs() 如果path是绝对路径,返回True
os.path.isdir() 判断name是不是一个目录,name不是目录就返回false
os.path.isfile() 判断name是不是一个文件,不存在返回false
os.path.islink() 判断文件是否连接文件,返回boolean
os.path.ismount() 指定路径是否存在且为一个挂载点,返回boolean
os.path.join(dirname,basename) 将文件路径和文件名凑成完整文件路径
os.path.lexists 路径存在则返回True,路径损坏也返回True
os.path.normpath(path) 规范path字符串形式
os.path.normcase(path) 转换path的大小写和斜杠
os.path.realpath(path) 返回path的真实路径
os.path.relpath(path[, start]) 从start开始计算相对路径
os.path.split(filename) 将文件路径和文件名分割(会将最后一个目录作为文件名而分离)
os.path.splitext(filename) 将文件路径和文件扩展名分割成一个元组
os.path.splitunc(path) 把路径分割为挂载点和文件名
os.path.samefile() 是否相同路径的文件,返回boolean
sys模块:
sys模块是与python解释器交互的一个接口。sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分。
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.modules.keys() 返回所有已经导入的模块列表
sys.exc_info() 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息
sys.exit(n) 退出程序,正常退出时exit(0)
sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.maxunicode 最大的Unicode值
sys.modules 返回系统导入的模块字段,key是模块名,value是模块
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdout 标准输出
sys.stdin 标准输入
sys.stderr 错误输出
sys.exc_clear() 用来清除当前线程所出现的当前的或最近的错误信息
sys.exec_prefix 返回平台独立的python文件安装的位置
sys.byteorder 本地字节规则的指示器,big-endian平台的值是’big’,little-endian平台的值是’little’
sys.copyright 记录python版权相关的东西
sys.api_version 解释器的C的API版本
sys.stdin,sys.stdout,sys.stderr
re模块:
创建一个"规则表达式",用于验证和查找符合规则的文本,广泛用于各种搜索引擎、账户密码的验证等
#常用正则特殊符号---------------------------------------------------------------------------
'.' 匹配所有字符串,除\n以外
‘-’ 表示范围[0-9]
'*' 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
'+' 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+
'^' 匹配字符串开头
'[^a-z]' 匹配出除字母外的字符,^元字符如果写到[]字符集里就是反取
‘$’ 匹配字符串结尾
'\' 转义字符, 使后一个字符改变原来的意思,如果字符串中有字符*需要匹配,可以\*或者字符集[*]
'*' 匹配前面的字符0次或多次
‘?’ 匹配前一个字符串0次或1次
'{m}' 匹配前一个字符m次
'{n,m}' 匹配前一个字符n到m次
'{}' 元字符,范围
'(......)' 分组表达式作为一个整体,也就是分组匹配,()里面的为一个组也可以理解成一个整体
'[]' 是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。
#常用正则预定义字符---------------------------------------------------------------------------
'\d' 匹配数字,等于[0-9]
'\D' 匹配非数字,等于[^0-9]
'\w' 匹配字母和数字,等于[A-Za-z0-9]
'\W' 匹配非英文字母和数字
'\s' 匹配空白字符
'\S' 匹配非空白字符
'\A' 匹配字符串开头
'\Z' 匹配字符串结尾
'\b' 匹配单词的词首和词尾,单词被定义为一个字母数字序列,因此词尾是用空白符或非字母数字符来表示的
'\B' 与\b相反,只在当前位置不在单词边界时匹配
范围匹配--------------------------------------------------------------------------------------
[xyz] 字符集合, 匹配所包含的任意一个字符
[ ^ xyz] 负值字符集合, 匹配未包含的任意字符
[a-z] 字符范围, 匹配指定范围内的任意字符
[ ^ a-z] 负值字符范围, 匹配任何不在指定范围内的任意字符[0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线;
[0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等;
[a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量;
[a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。
A | B可以匹配A或B,所以(P | p)ython可以匹配'Python'或者'python'。
^ 表示行的开头,^\d表示必须以数字开头。
$ 表示行的结束,\d$表示必须以数字结束。
#常用的re函数---------------------------------------------------------------------------------
re.match(pattern, string, flags=0) 从字符串的起始位置匹配,如果起始位置匹配不成功的话,match()就返回none
re.search(pattern, string, flags=0) 寻找整个字符串并返回第一个成功的匹配
re.findall(pattern, string, flags=0) 找到RE匹配的所有字符串,并把他们作为一个列表返回
re.finditer(pattern, string, flags=0) 找到RE匹配的所有字符串,并把他们作为一个迭代器返回
re.sub(pattern, repl, string, count=0, flags=0) 替换匹配到的字符串
_thread多线程:
Python中使用线程有两种方式:函数或者用类来包装线程对象。
函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程。
_thread.start_new_thread ( function, args[, kwargs] )
function - 线程函数。
args - 传递给线程函数的参数,他必须是个tuple类型。
kwargs - 可选参数。
import _thread
import time
# 为线程定义一个函数
def print_time( threadName, delay):
count = 0
while count < 5:
time.sleep(delay)
count += 1
print ("%s: %s" % ( threadName, time.ctime(time.time()) ))
# 创建两个线程
try:
_thread.start_new_thread( print_time, ("Thread-1", 2, ) )
_thread.start_new_thread( print_time, ("Thread-2", 4, ) )
except:
print ("Error: 无法启动线程")
while 1:
pass
threading 模块除了包含 _thread 模块中的所有方法外,还提供的其他方法:
threading.currentThread(): 返回当前的线程变量。
threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动
前和终止后的线程。
threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。
--------------------------------------------------------------------------------------------------------------------------------------
线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:
run(): 用以表示线程活动的方法。
start():启动线程活动。
join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理
的异常-或者是可选的超时发生。
isAlive(): 返回线程是否活动的。
getName(): 返回线程名。
setName(): 设置线程名。
使用 threading 模块创建线程
可以通过直接从 threading.Thread 继承创建一个新的子类,并实例化后调用 start() 方法启动新线程,即它调用了线程的 run() 方法:
import threading
import time
exitFlag = 0
class myThread (threading.Thread):
def __init__(self, threadID, name, delay):
threading.Thread.__init__(self)
self.threadID = threadID
self.name = name
self.delay = delay
def run(self):
print ("开始线程:" + self.name)
print_time(self.name, self.delay, 5)
print ("退出线程:" + self.name)
def print_time(threadName, delay, counter):
while counter:
if exitFlag:
threadName.exit()
time.sleep(delay)
print ("%s: %s" % (threadName, time.ctime(time.time())))
counter -= 1
# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)
# 开启新线程
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print ("退出主线程")
边栏推荐
猜你喜欢
随机推荐
QR code generation API interface, which can be directly connected as an A tag
环形链表---------约瑟夫问题
[campo/random-user-agent]随机伪造你的User-Agent
L1-039 古风排版(C)
解决MySQL创建子视图并查看的时候,字符集报错问题
Thread Pool (Introduction and Use of Thread Pool)
Common methods of js array deduplication
js eventLoop 事件循环机制
简单黑马头条项目
PHP 给图片添加全图水印
---static page---
DOM manipulation---magnifying glass case
微信小程序怎么批量生成带参数的小程序码?
uniapp | 开发中遇到的兼容性问题(待续)
uniapp | 使用npm update更新后编译报错问题
逍遥多开模拟器ADB驱动连接
每日五道面试题总结 22/7/23
解决 Zlibrary 卡死/找不到域名/达到限额问题,Zlibrary最新地址
钟表刻度线
每日面试题 2022/7/28