Python学习笔记
文章平均质量分 58
Jepson2017
这个作者很懒,什么都没留下…
展开
-
python获取随机user agent
python中有一个 fake_useragent 库,用于生成随机的用户代理字符串。用户代理字符串是浏览器或其他客户端发送给服务器以标识自己的字符串,通常用于分析网站访问者的信息。使用 fake_useragent 可以帮助你避免被某些网站通过用户代理进行限制或追踪。每次调用 ua.random 时,都会返回一个新的随机user agent;原创 2024-03-25 21:51:29 · 362 阅读 · 0 评论 -
python随机生成指定长度的字符串
random.choice(sequence)从序列中获取一个随机元素,参数sequence表示一个有序类型。sequence在Python中不是一种特定的类型,而是泛指序列数据结构。列表,元组,字符串都属于sequence。在Python中,可以使用join()函数将一个列表中的元素拼接成一个字符串。k为指定长度,返回结果为长度为k的列表。原创 2023-11-07 18:11:59 · 800 阅读 · 3 评论 -
python线程和进程
1 线程和进程几乎所有的操作系统都支持同时运行多个任务,每个任务通常是一个程序,每一个运行中的程序就是一个进程,即进程是应用程序的执行实例。现代的操作系统几乎都支持多进程并发执行。注意,并发和并行是两个概念,并行指在同一时刻有多条指令在多个处理器上同时执行;并发是指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。线程 是进程的组成部分,一个进程可以拥有多个线程。在多线程中,会有一个主线程来完成整个进程从开始到结束的全部操作,而其他的线程会在主线程原创 2022-04-01 09:13:51 · 2645 阅读 · 0 评论 -
python queue模块
1 模块介绍Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步。2 队列2.1 queue.Queue(maxsize=0)先进先出(First In First Out: FIFO)队列,最早进入队列的数据拥有出队列的优先权。入参 maxsize 是一个整数,用于设置队列的最大长度。一原创 2022-03-25 11:14:36 · 5010 阅读 · 3 评论 -
利用python实现蚂蚁森林自动偷能量
import uiautomator2 as u2import timeimport randomimport loggingimport datetimefrom logging import handlers# Add loggingclass Logger: level_relations = { 'debug':logging.DEBUG, 'info':logging.INFO, 'warning':l转载 2021-02-13 22:45:41 · 1401 阅读 · 6 评论 -
python写一个群聊的程序
需求分析:聊天工具是CS程序,C是每一个客户端,S是服务端服务应具有的功能:启动服务,包括绑定地址和端口,监听建立连接,能和多个客户端建立连接接收不同用户的信息分发,将接收的某个用户的信息转发到已连接的所有客户端停止服务记录连接的客户端import loggingimport socketimport threadingFORMAT = '%(asctime)s %(threadName)s %(message)s'logging.basicConfig(format=F原创 2020-12-26 12:09:14 · 215 阅读 · 0 评论 -
点击热图绘制
利用python pyheatmap包绘制热力图import matplotlib.pyplot as pltfrom pyheatmap.heatmap import HeatMapdef plot_data(filename): with open(filename,'r') as fh: data=fh.read().split('\n') xs ...原创 2018-08-22 14:48:16 · 1029 阅读 · 0 评论 -
五行代码创建微信自动聊天机器人
五行代码创建微信自动聊天机器人本文使用图灵的机器人接口,创建微信聊天机器人图灵机器人接口地址:http://www.tuling123.com/聊天机器人代码:from wxpy import *#在电脑上登录网页版版微信bot = Bot()#apikey,在此处输入图灵机器人的key(需要在图灵机器人网站注册申请)tuling = Tuling(api_key=tuli...原创 2018-05-26 19:15:22 · 1225 阅读 · 0 评论 -
调用企业微信接口发送微信消息
准备工作:1.需要注册个企业微信账号,地址:https://work.weixin.qq.com/wework_admin/loginpage_wx2.在企业微信中,创建一个应用,如下图:需要上传应用logo、填写应用名称、并选择成员,之后点击创建应用3.应用创建成功后,进入应用,获取应用的AgentId和Secret,如下图:4.企业微信发送应用消息接口文档地址:https://work.weixin.qq.com/api/doc/90000/90135/90236实现代码:import原创 2021-01-10 11:36:24 · 15172 阅读 · 9 评论 -
多进程和多线程请求实例
采用多线程和多进程请求网页#coding=utf-8import requestsimport timeimport threadingimport multiprocessingprint('************************开始执行DDoS攻击************************')# time.sleep(2)def attack_work(name,num): count = 1 while True: if count原创 2021-12-25 11:45:46 · 712 阅读 · 2 评论 -
python创建一个单进程单线程多任务的tcp服务
python 单进程、单线程实现多任务的一种方法,以创建tcp服务为例# -*- coding: utf-8 -*-import socketimport timetcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)tcp_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 设置端口可以重复使用tcp_server.bind(("",7890))原创 2021-11-26 08:45:07 · 273 阅读 · 0 评论 -
python 正则表达式
re模块操作在Python中需要通过正则表达式对字符串进行匹配的时候,可以使用一个模块,名字为rere.matchre.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none#coding=utf-8# 导入re模块import re# 使用match方法进行匹配操作result = re.match(正则表达式,要匹配的字符串,标志位) # 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。# 如果上一步原创 2021-11-25 10:54:59 · 150 阅读 · 0 评论 -
python实现一个简单的http服务器
用python实现一个简单的http服务器,用户通过浏览器请求任意路径,返回一个固定的页面# -*- coding: utf-8 -*-import socketdef service_client(new_socket): # 为这个客户端返回数据 # 1.接收浏览器发过来的请求,即http请求 # GET / HTTP/1.1 recv_data = new_socket.recv(1024).decode('utf-8') request_header原创 2021-11-22 20:23:32 · 7153 阅读 · 2 评论 -
python协程
协程协程,又称微线程。协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。 为啥说它是一个执行单元,因为它自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。 只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,然后切换到另外一个函数中执行,注意不是通过调用函数的方式做到的,并且切换的次数以及什么时候再切换到原来的函数都由开发者自己确原创 2021-10-29 13:15:49 · 8434 阅读 · 1 评论 -
python迭代器
python学习之迭代器# -*- coding: utf-8 -*-from collections import Iterablefrom collections import Iteratorclass Classmate(object): def __init__(self): self.names = list() self.current_num = 0 def add(self,name): self原创 2021-10-28 08:43:07 · 4550 阅读 · 0 评论 -
python生成器
1.生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方法)时按照特定的规律进行生成。但是我们在实现一个迭代器时,关于当前迭代到的状态需要我们自己记录,进而才能根据当前状态生成下一个数据。为了达到记录当前状态,并配合next()函数进行迭代使用,我们可以采用更简便的语法,即生成器(generator)。生成器是一类特殊的迭代器。2.创建生成器的方法要创建一个生成器,有很多种方法。第一种方法很简单,只要把一个列表生成式的 [ ] 改成 ( )创建 L 和 G 的区别仅在于最外层的 [ ]原创 2021-10-29 12:47:22 · 523 阅读 · 0 评论 -
python远程操作linux
通过python操作linux用到的模块包 paramikoparamiko 模块paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,底层是用cryptography实现,我们如果希望远程登录主机或者远程sftp下载或者上传文件等都可以使用该库实现。改模块详细教程:https://docs.paramiko.org/en/stable/api/sftp.html远程连接原创 2021-10-26 19:37:03 · 805 阅读 · 0 评论 -
利用python实现本地文件上传到sftp
实现功能: 利用python自动连接sftp,并实现本地文件(文件夹)自动上传到远程sftp服务中指定路径下,且保持本地目录结构系统环境:centos7python版本:python3使用模块包:paramiko ,若未安装,可使用 pip install paramiko 进行安装难点分析:(1)sftp.put(localfile,remotefile) 函数必须是两个文件名,且sftp远端的文件路径要存在,因此需要提前创建好目录(2)sftp.mkdir() 函数只能创建一级目录,不能循环原创 2021-10-26 19:10:53 · 5521 阅读 · 1 评论 -
Python操作FTP
本文提供利用python将文件上传到FTP中和从FTP中下载文件到本地的方法**适用环境:**python3from ftplib import FTPimport os.path#设置FTP连接信息address= '127.0.0.1'port= 21#FTP用户名user_name= 'user'#FTP密码password= 'passwd'#本地要上传的文件...原创 2018-05-26 01:22:25 · 5084 阅读 · 1 评论 -
centos7中安装mysql-python包
系统环境:centos7、python2.7mysql-python模块包下载:MySQL-python-1.2.5安装方法1. 将安装包上传到centos系统中,并解压2. 进入解压后的目录中,执行以下命令:python setup.py build提示报以下错误:解决方法:安装python-develyum -y install python-devel然后重新执行 python setup.py build ,编译成功然后执行安装命令:python setup.py in原创 2021-09-23 15:58:20 · 886 阅读 · 0 评论 -
python中json的使用
json模块JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。Python 中可以使用 json 模块来对 JSON 数据进行编解码,它主要提供了四个方法: dumps、dump、loads、loadjson.loads:字符串(标准json格式)转换成 dict list:import jsondata = '[{"name":"张三","age":20},{"name":"李四","age":19},{"name":"小文","age":21}]原创 2021-09-09 22:13:45 · 1068 阅读 · 0 评论 -
使用多进程实现文件夹拷贝
需求:将某个路径中的全部文件(不考虑路径中存在子路径的情况)拷贝到目标路径中适用环境:python3实现代码:#coding=utf-8'''采用多进程方式实现将某路径下的文件拷贝到另一个路径中'''import osimport multiprocessingimport datetimefrom functools import wraps#增加一个装饰器,用于统计函数执行的时间def logger_time(fn): @wraps(fn) def wrap原创 2021-03-07 14:36:37 · 412 阅读 · 0 评论 -
centos7中离线安装python setuptools
安装 setuptools:1.下载python setuptools安装包下载地址:https://pypi.python.org/packages/source/s/setuptools/setuptools-2.0.tar.gz2.解压安装包tar zxvf setuptools-2.0.tar.gz 3.进入解压后的目录中cd setuptools-2.0 4.编译setuptoolspython setup.py build 5.执行setuptools安装python原创 2021-02-28 17:29:10 · 1120 阅读 · 0 评论 -
使用 Python ElementTree 生成 xml
使用到的库:xml.etree.ElementTree用法示例:# 导入模块import xml.etree.ElementTree as ET# 生成根节点root_xml = ET.Element('root')# 生成第一个子节点 headhead_xml = ET.SubElement(root_xml,'head')# head 节点的子节点title = ET.SubElement(head_xml,'title')title.text = 'Welcome!'#原创 2021-02-24 17:14:19 · 1428 阅读 · 0 评论 -
python UIAutomator2使用教程
一、环境要求python 3.6+android 4.4+二、介绍uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。三、库地址GitHub地址:https://github.com/openatx/uiautomator2https://github.com/openatx/uiautomato转载 2021-02-14 20:15:11 · 12401 阅读 · 3 评论 -
pandas 按行遍历Dataframe
示例数据源如下:data.csv遍历Dataframe有一下三种方法:iterrows(): 按行遍历,将 DataFrame 的每一行迭代为 (index,Series) 对,可以通过row[name] 对元素进行访问。itertuples(): 按行遍历,将 DataFrame 的每一行迭代为元组,可以通过 row[name] 对元素进行访问,比 iterrows() 效率高。iteritems(): 按列遍历,将 DataFrame 的每一列迭代为(列名, Series)对,可以通过 r原创 2021-01-09 22:30:25 · 44326 阅读 · 1 评论 -
pandas read_csv读取数据时,数字字段值以文本方式读取
pandas 读取csv文本时,数字字段值中有以0开头的,读取后0会被丢掉,如下图文本:以默认方式读取如下:import pandas as pddf = pd.read_csv('data.csv',encoding='utf-8')print(df)如下图,读取后,基金代码开头的0丢失了解决方法:import pandas as pddf = pd.read_csv('data.csv',encoding='utf-8',converters = {'基金代码':str})pri原创 2021-01-09 21:18:51 · 4975 阅读 · 0 评论 -
python中logging模块
logging模块:python logging提供了一组便利的函数,用来做简单的日志。它们是 debug()、 info()、 warning()、 error() 和 critical()。logging函数根据它们用来跟踪的事件的级别或严重程度来命名。标准级别及其适用性描述如下(以严重程度递增排序):级别数值何时使用DEBUG10详细信息,一般只在调试问题时使用。INFO20证明事情按预期工作。WARNING30某些没有预料到的事件的提示,或者在将来原创 2020-12-18 14:55:26 · 191 阅读 · 0 评论 -
python通过UDP/TCP方式发送数据
UDP简介:UDP — 用户数据报协议(User Datagram Protocol),是一个无连接的简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。UDP发送数据:示例:往192.168.149.128(linux)上的UDP 8888上发送数据,在128服务器上,利用nc监听8888端口,接收测试数据import s原创 2020-12-17 12:55:35 · 1539 阅读 · 0 评论 -
利用python实现排序,并标上序号
需求:利用python实现排序功能测试数据:data.csv"id","date","amount""1","2019-02-08","6214.23""1","2019-02-08","6247.32""1","2019-02-09","85.63""2","2019-02-14","943.18""2","2019-02-15","369.76""2","2019-02-18","795.15""2","2019-02-19","715.65""2","2019-02-21","53原创 2020-08-20 13:23:24 · 5686 阅读 · 1 评论 -
python利用正则提取字符串中的手机号
需求:利用正则提取字符串的手机号(假设手机号为1开头的11为数字,要求手机号前后不为数字)待提取的字符串:str=" 15838477645dfdfdf15887988765 dfdf1157990087651fd157385367891fdf15826789876qqq15838545678a"import restr="15838477645dfdfdf15887988765dfdf1157990087651fd157385367891fdf15826789876qqq15838545678a"原创 2020-08-20 12:12:18 · 6963 阅读 · 3 评论 -
python解析web网站访问日志
使用正则解析web网站访问日志import reimport datetimelogline='''192.168.149.133 -- [19/Feb/2020:10:12:56 +0800] "GET /www.baidu.com/zhidao?cmpid=3 HTTP/1.1" 200 16691 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.原创 2020-07-09 14:03:48 · 637 阅读 · 0 评论 -
装饰器:实现一个cache装饰器,可实现过期自动清除功能
实现cache装饰器from functools import wrapsimport timeimport inspectimport datetimedef func_cache(fn): local_cache = {} #根据函数名定义不同的cache @wraps(fn) def wrapper(*args,**kwargs): #接收各种参数 print("传入参数: ",args,kwargs) # 参数处理原创 2020-12-26 09:21:52 · 253 阅读 · 0 评论 -
装饰器:判断函数参数类型是否符合定义
装饰器的应用:判断函数参数类型是否符合定义import inspectdef check(fn): def wrapper(*args,**kwargs): print(args,kwargs) sig = inspect.signature(fn) params = sig.parameters #有序字典 print('params :',sig.parameters) print(原创 2020-12-26 09:22:49 · 238 阅读 · 0 评论 -
centos7中crontab定时执行python脚本不生效
问题: 最近在项目中遇到crontab中定时执行python脚本不生效,但是手动直接运行python脚本能够正常执行。系统环境: centos7python安装路径:/root/anaconda3/bin/pythonpython脚本:/data/test/sftp.pycrontab中添加定时任务:0 * * * * python /data/test/sftp.py问题原因:主要是crontab的运行目录和py脚本运行目录不一样(直接执行和通过任务执行,程序的执行环境不同),更改pytho原创 2020-05-26 13:57:27 · 1465 阅读 · 0 评论 -
利用python实现自动下载sftp文件
实现功能:利用python自动连接sftp,并下载sftp中指定目录下的所有目录及文件系统环境:centos7python版本:python3使用模块包:paramiko ,若未安装,可使用 pip install paramiko 进行安装需求实例:sftp中的文件如下将sftp根目录中的所有文件下载到本地 /data/test 目录中实现代码:#!/usr/bin/python# coding=utf-8import paramikoimport osdef sftp_dow原创 2020-05-23 08:58:04 · 5184 阅读 · 2 评论 -
pandas中,利用groupby分组后,对字符串字段进行合并拼接
在pandas里对于数值字段而言,groupby后可以用sum()、max()等方法进行简单的处理,对于字符串字段, 如果把它们的值拼接在一起,可以用使用 str.cat() 和 lamda 方法。如,将下面表格中的内容,对skill字段按照id进行分组合并实现代码:import pandas as pdfile_name='test.xlsx'df=pd.read_excel(file_name)data=df.groupby('id')['skill'].apply(lambda x:原创 2020-05-10 17:36:23 · 27193 阅读 · 6 评论 -
使用python bloomfilter实现大文本去重
需求:项目中在收集数据的时候,遇到日志中存在大量的重复记录,数据在入库之前需要先对日志文件做一个处理,滤掉重复的事件bloomfilter原理参考文章:python BloomFilter(布隆过滤器)项目环境:python3.7需要安装的模块包:pybloom-live-3.0.0下载pybloom_live-3.0.0.tar.gz后,直接执行pip install pybloom_l...原创 2020-04-24 12:47:01 · 964 阅读 · 1 评论 -
在python脚本中执行shell命令
需求:python脚本中执行shell命令环境:centos7方法一:利用os.system()import os#shell 命令cmd='cat a.log'#python中执行shell命令result=os.system(cmd)print(result) #结果为0和1,0标识cmd执行成功方法二:利用os.popen()import os#shell 命...原创 2019-11-27 10:26:30 · 1229 阅读 · 0 评论 -
python2中向文本中写入unicode编码的中文内容
python2内置库中的open方法只能读写ascii码,如果想写入Unicode字符,需要使用codecs包。如下例子,用open直接写入会报错,需要用到codecs.open,并且支持设置编码import codecscontent = u'你好'print "python2中使用open写入unicode编码的中文:"try: with open('test.csv',...原创 2019-11-22 18:49:46 · 1321 阅读 · 0 评论