(8) Requests、Os、Sys、Re、_thread、Queue

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 ("退出主线程")

Queue


myqueue.put(10) #将一个值放入队列中
myqueue.get() #将一个值从队列中取出
------------------------------------------------

Queue.qsize() #返回队列的大小

Queue.empty() #如果队列为空,返回True,反之False

Queue.full() #如果队列满了,返回True,反之False

Queue.full 与 maxsize 大小对应

Queue.get([block[, timeout]]) #获取队列,timeout等待时间

Queue.get_nowait() #相当Queue.get(False)

非阻塞 Queue.put(item) 写入队列,timeout等待时间

Queue.put_nowait(item) #相当Queue.put(item, False)

Queue.task_done() #在完成一项工作之后,Queue.task_done() 函数向任务已经完成的队列发送一个信号

Queue.join() #实际上意味着等到队列为空,再执行别的操作

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值