
Python
python3
程序员班长
武汉计算机硕士在读,热爱计算机也不想秃头
展开
-
Python词频对比分析并导出到CSV文件
import jiebaimport pandas as pdimport csvimport codecs# num=jieba.lcut("中国是一个伟大的国家") # jieba库的测试# print(num)# 计算机专业的-1.txttxt1=open("计算机专业.txt").read()# 导入停用词库,过滤掉那些没用的词语,甚至都不是词语,比如标点符号,停用词在我...原创 2024-03-11 10:16:31 · 262 阅读 · 1 评论 -
Python之深拷贝和浅拷贝
可变对象:浅拷贝只拷贝第一层数据,深拷贝会逐层拷贝;不可变对象:无论深浅拷贝,都是引用的赋值,都不会进行拷贝。原创 2022-05-08 23:22:40 · 492 阅读 · 1 评论 -
Python中常用的内置函数(不断更新中)
在Python中有非常多的内置函数,在这里列出来一些经常使用到的内置函数,在编程时如果恰当地使用这些函数会达到事半功倍的效果!本篇博文内容会经常更新,建议收藏原创 2022-04-10 20:32:41 · 21235 阅读 · 3 评论 -
Python装饰器的定义和使用
1.装饰器的定义装饰器:给已有函数增加额外的功能的函数,本质上是一个闭包函数特点: 1.不修改已有函数的源代码 2.不修改已有函数的调用方式 3.给已有函数增加额外的功能 4.代码执行时先解析装饰器# @Author : Kant# @Time : 2022/1/23 18:06'''装饰器:给已有函数增加额外的功能的函数,本质上是一个闭包函数特点: 1.不修改已有函数的源代码 2.不修改已有函数的调用方式 3.给已有函数...原创 2022-01-25 14:33:54 · 1026 阅读 · 0 评论 -
Python闭包的使用
1.闭包的定义和使用当返回的内部函数使用了外部函数的变量就形成了闭包闭包可以对外部函数的变量进行保存,还可以提高代码的可重用性实现闭包的标准格式:1.函数嵌套2.内部函数使用外部函数的变量或参数3.外部函数返回了内部函数# @Author : Kant# @Time : 2022/1/23 17:19'''当返回的内部函数使用了外部函数的变量就形成了闭包闭包可以对外部函数的变量进行保存,还可以提高代码的可重用性实现闭包的标准格式: 1.函数嵌套 2.内原创 2022-01-25 14:26:40 · 543 阅读 · 0 评论 -
Python连接Mysql数据库SQL注入问题的解决
pymysql自带解决sql注入问题的方法'''sql注入问题的解决pymysql自带解决sql注入问题的方法'''import pymysqlconnect_db=pymysql.connect(host='localhost',port=3306,user='root',password='root',charset='utf8',database='jing_dong')cur=connect_db.cursor()select_id=input('请输入要查询的id:')#原创 2022-01-25 00:36:19 · 478 阅读 · 0 评论 -
Python实现Mysql数据库插入十万条数据
# @Author : Kant# @Time : 2022/1/22 16:37'''插入十万条数据'''import pymysql# Connect = connect = Connection = connections.Connectionconnect_db=pymysql.Connect(host='localhost',port=3306,database='index_test',user='root',password='root',charset='utf8.原创 2022-01-24 14:52:39 · 1569 阅读 · 0 评论 -
Python利用pymysql连接Mysql数据库
pymysql是一个Python的第三方包,需要手动安装后才能使用1.使用pymysql查询数据'''pymysql基本使用步骤使用pymysql查询数据'''import pymysql# 创建数据库连接对象,除了端口外,其他类型都要用字符串类型connect_db=pymysql.connect(host='localhost',port=3306,user='root',password='root',charset='utf8',database='jing_dong')原创 2022-01-24 14:51:06 · 1434 阅读 · 0 评论 -
Python搭建静态web服务器
核心还是使用Python的socket实现的,socket的具体用法前面文章有写,这里不写太多注释。1.本地搭建python静态web服务器在资源目录打开命令终端,输入命令:python -m http.server [端口号],端口号不写默认8000即可然后在浏览器输入localhost:8000/资源路径即可访问你想访问的页面2.返回固定数据的静态web服务器'''返回固定数据的静态web服务器'''# 导入模块import socket# 创建socket对象sta原创 2022-01-24 14:44:12 · 2032 阅读 · 0 评论 -
Python基于socket实现的多任务版TCP服务端
'''基于socket实现的多任务版TCP服务端'''import socketimport threadingdef client_task(client_socket,ip_port): print(ip_port,'加入连接') # 持续接收客户端的消息 while True: data=client_socket.recv(1024).decode('gbk') if len(data)!=0: prin.原创 2022-01-24 13:05:40 · 1747 阅读 · 0 评论 -
Python基于socket实现的TCP服务端
'''基于socket实现的TCP服务端'''import socket# 建立socket对象server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)# 如果服务器是一次性的,如果服务器结束后马上重新启动会出现一个错误,原因是地址和端口没有被释放# OSError: [Errno 48] Address already in use# 如果想马上释放,要设置一下socket选项server_socket.setsoc.原创 2022-01-24 13:04:15 · 2332 阅读 · 0 评论 -
Python基于socket实现的TCP客户端
'''基于socket实现的TCP客户端'''import socket# 建立socket对象# 参数一表示IP地址类型(AF_INET为IPV4,AF_INET6为IPV6),参数二表示连接的类型(SOCK_STREAM表示TCP形式,SOCK_DGRAM表示UDP形式)client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 代表(ipv4,TCP)# 连接服务器(元组中填目标ip地址和端口号)clien.原创 2022-01-24 13:03:31 · 1437 阅读 · 0 评论 -
Python多进程的使用
1.计算密集型用多进程;2.进程之间执行是无序的,操作系统调度哪个进程,哪个进程就先执行;3.进程之间不共享全局变量,创建子进程时会复制父进程的全部资源;4.主进程会等待所有子进程执行结束再结束;5.主进程结束立马结束子进程:1.子进程对象.daemon=True,2.子进程对象.terminate();6.执行线程时才有GIL锁——Global Interpreter Lock。'''计算密集型用多进程进程之间执行是无序的,操作系统调度哪个进程,哪个进程就先执行进程之间不共享全局变.原创 2022-01-24 13:01:23 · 574 阅读 · 0 评论 -
Python多线程共享变量资源竞争问题
1.资源竞争问题:sum+=1执行时大致会分为三步(取值、加1、写回),可能刚执行2步cpu就去切换到了另一个线程去执行;2.解决办法:1.使用join()方法来设置线程同步(效率不高),2.加锁(可以保证同一时刻只有一个线程在执行)。'''资源竞争问题:sum+=1执行时大致会分为三步(取值、加1、写回),可能刚执行2步cpu就去切换到了另一个线程去执行解决办法:1.使用join()方法来设置线程同步(效率不高),2.加锁(可以保证同一时刻只有一个线程在执行)'''import th.原创 2022-01-24 12:59:08 · 543 阅读 · 0 评论 -
Python多线程的使用
1.线程之间执行是无序的,cpu调度哪个线程就执行哪个线程;2.主线程等待所有子线程结束后再结束,设置守护线程可以实现当主线程结束时子线程立马结束;3.设置守护线程:1.threading.Thread(daemon=True),2.线程对象.setDaemon(True);4.线程之间共享全局变量,存在资源竞争问题。'''线程之间执行是无序的,cpu调度哪个线程就执行哪个线程主线程会等待所有子线程结束之后再结束,设置守护线程可以实现当主线程结束时子线程立马结束设置守护线程:1.threa原创 2022-01-24 12:57:04 · 1417 阅读 · 0 评论 -
Python中*args 和**kwargs的用法
刚开始学习python的时候,对有关args,kwargs,和*的使用感到很困惑。相信对此感到疑惑的人也有很多。我打算通过这个帖子来排解这个疑惑(希望能减少疑惑)。让我们通过以下5步来理解:1.通过一个函数调用来理解’*’的作用2.通过一个函数的定义来理解’*args’的含义3.通过一个函数的调用来理解’**’的作用4.通过一个函数的定义来解’**kwargs’的含义5.通过一个应用实例来说明’args’,’kwargs’应用场景以及为何要使用它通过一个函数调用来理解’...转载 2022-01-23 21:03:40 · 1643 阅读 · 1 评论 -
Python模拟哲学家进餐问题
有两个哲学家坐在桌子上,桌子上放了两只筷子,编号分别是a和b,只有同时得到a、b两只筷子时哲学家才能吃饭,如果筷子a被哲学家1号抢到了,筷子b被哲学家2号抢到了,此时两位哲学家都想要得到对方手中的筷子然后去吃一口饭,但是又不肯主动放下自己手中的筷子给对方,此时就进入了漫长的等待对方释放自己想要的“资源”的过程,也就产生了死锁。import threadingimport time# 创建两个锁lock_a=threading.Lock()lock_b=threading.Lock()d原创 2022-01-16 21:35:31 · 906 阅读 · 0 评论 -
Python实现学生信息管理(面向对象)
目录正式代码如下:student.py——负责保存学生的单条信息student_manage.py——负责管理学生信息,对学生信息进行操作main.py——程序的入口文件实现了学生信息的增、删、改、查、从文件读入、写入文件发现了python的一个容易让程序员写出bug的地方:假如file=open('students.txt', 'r')当使用file.readlines()方法从文件读入数据时,不管程序怎么写,只要用一次file.readlines(),那么在之后使用了f原创 2022-01-12 19:45:37 · 1865 阅读 · 0 评论 -
Python批量修改文件名
此处以修改图片文件名为例,将图片复制到新的目录中再修改名称~原始文件名如下修改后的效果如下代码来咯# 实现将one文件夹中的每一个图片复制到two文件夹并修改图片名为按照a、b、c、d递增排序# 思路:重命名为新建一个文件将原来文件内容复制过去import osdef alterFileName(source,target): print("当前文件夹下有以下几个文件>>>") file_list=os.listdir(source.原创 2022-01-07 23:32:08 · 1646 阅读 · 0 评论 -
简单的用Python实现学生信息管理
基本功能:增、删、改、查import sysstus=[]def select_num(n): if n==1: if stus: show_stu() else: print("暂无数据!") elif n==2: add_stu() elif n==3: search_stu() elif n==4: del_stu() elif原创 2022-01-07 00:34:18 · 522 阅读 · 0 评论 -
Python爬取京东商品信息以及评论存进MySQL
目录构建mysql数据表第一版:第二版 :第三版:总结:构建mysql数据表问题:使用SQL alchemy时,非主键不能设置为自增长,但是我想让这个非主键仅仅是为了作为索引,autoincrement=True无效,该怎么实现让它自增长呢?from sqlalchemy import String,Integer,Text,Columnfrom sqlalchemy import create_enginefrom sqlalchemy.orm import sess原创 2021-02-22 18:01:05 · 1553 阅读 · 0 评论 -
Python爬取房天下租房信息实战
思路:先单线程爬虫,成功之后再优化为多线程,最后存入数据库以爬取郑州市租房信息为例一、单线程爬虫# 用session取代requests# 解析库使用bs4# 并发库使用concurrentimport requests# from lxml import etree # 使用xpath解析from bs4 import BeautifulSoupfrom urllib import parseimport reheaders = { 'referer': 'h原创 2021-02-18 01:11:22 · 1049 阅读 · 1 评论 -
Python异步爬取知乎热榜
一、错误代码:摘要和详细的url获取不到import asynciofrom bs4 import BeautifulSoupimport aiohttpheaders={ 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', 'referer': 'https://ww原创 2021-02-04 22:16:56 · 316 阅读 · 0 评论 -
Python线程池爬取糗事百科
import timefrom concurrent.futures import ThreadPoolExecutorfrom bs4 import BeautifulSoupimport requestsfrom urllib import parseheaders={ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0..原创 2021-02-04 17:51:03 · 175 阅读 · 0 评论 -
Python使用aiohttp异步爬取糗事百科
from bs4 import BeautifulSoupimport aiohttp # 代替requestsimport asynciofrom urllib import parseheaders={ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36', 'Refe.原创 2021-02-04 17:16:02 · 187 阅读 · 0 评论 -
Python报错ModuleNotFoundError: No module named ‘concurrent‘
在测试Python的多线程时,根据官方的说法,concurrent.futures在Python3中已经内置了,不需要下载安装,如果是Python2则需要运行pip install futures进行安装。。。这样导入,两种写法均可import concurrent.futures# from concurrent import futures但是,,,我是python3.7,竟然给我报出了下面的错误,我直接裂开ModuleNotFoundError: No module named原创 2021-02-03 22:36:17 · 6276 阅读 · 1 评论 -
Python多进程之构建进程池
# 减少资源消耗,使资源复用import multiprocessingimport timedef square(data): time.sleep(1) result=data*data return resultif __name__ == '__main__': inputs=list(range(100)) s=time.time() pool=multiprocessing.Pool(processes=4) # 池子中存在四个进程.原创 2021-02-02 21:51:59 · 207 阅读 · 0 评论 -
Python借助队列实现进程通信
from multiprocessing import Process,Queuedef write(q): print("Process to write:%s"%Process.pid) for i in range(10): print("Put %d to queue..."%i) q.put(i) # 入队def read(q): print("Process to read:%s"%Process.pid) whi.原创 2021-02-02 21:46:18 · 100 阅读 · 0 评论 -
Python之多进程
import multiprocessingimport timedef start(i): time.sleep(1) print(i) print(multiprocessing.current_process().name) # 当前进程的名字 print(multiprocessing.current_process().pid) # 当前进程的pid print(multiprocessing.current_process().is.原创 2021-02-02 21:45:19 · 105 阅读 · 0 评论 -
Python多线程之构建线程池
在做爬虫项目时,假设获取一个页面的时间为3秒,一共需要获取10个页面,总时间也就是30秒,但是如果采用线程池,可以把总时间压缩到3秒!因为这10个页面是并行下载的(宏观是并行,微观仍然串行,只是CPU切换各任务的速度非常快而已)Python没有内置的很好的线程池,推荐一个第三方库threadpool# pip install threadpoolimport timeimport threadpooli=1# 执行比较耗时的函数,需要开启多线程def get_html(url): .原创 2021-02-02 21:43:38 · 228 阅读 · 0 评论 -
Python多线程——递归锁RLOCK
# with——自动打开自动关闭import threadingimport timeclass Test: rlock=threading.RLock() def __init__(self): self.number=0 def execute(self,n): with Test.rlock: self.number+=n def add(self): with Test.rlock:.原创 2021-02-02 21:37:31 · 372 阅读 · 0 评论 -
Python多线程——LOCK锁
'''import threadingnumber=0def addNumber(): global number for i in range(1000000): number+=1 # 运行时分为计算赋值两步:a=number+1,number=adef downNumber(): global number for i in range(1000000): number-=1 # 运行时分为计算.原创 2021-02-02 21:36:14 · 745 阅读 · 0 评论 -
Python里面的多线程
import threadingimport timedef start(): time.sleep(5) print(threading.current_thread().name) # 当前线程的名字 print(threading.current_thread().isAlive()) # 当前线程是否还活着 print(threading.current_thread().ident) # 当前线程的idif __name__ == '__main__'.原创 2021-02-02 21:33:58 · 106 阅读 · 0 评论 -
Python_sqlalchemy之多对多建表
from sqlalchemy import create_enginefrom sqlalchemy import String,Integer,Column,select,ForeignKey,Tablefrom sqlalchemy.orm import sessionmaker,relationshipfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import or_,and_ # 查询使用.原创 2021-01-31 21:07:10 · 385 阅读 · 0 评论 -
Python_sqlalchemy——创建、查询、删除、更新一对多的表
目录一、创建第一种方法:第二种写法:二、查询三、删除四、更新数据一、创建第一种方法:from sqlalchemy import create_enginefrom sqlalchemy import String,Integer,Column,select,ForeignKeyfrom sqlalchemy.orm import sessionmaker,relationshipfrom sqlalchemy.ext.declarative import dec原创 2021-01-30 21:54:05 · 886 阅读 · 1 评论 -
Python操纵Mysql数据库的三种方法,实现增删改查
目录这里使用的数据库是关系型数据库Mysql一、首先,需要安装两个库二、3种实现增删改查的方法1. 使用原生语句进行增删改查2. 使用表结构进行增删改查3. 使用集成ORM类操纵数据库,Flask会用到,非常重要,必须掌握这里使用的数据库是关系型数据库Mysql一、首先,需要安装两个库pip install sqlalchemypip install pymysql二、3种实现增删改查的方法1. 使用原生语句进行增删改查from sqlalc...原创 2021-01-29 22:51:02 · 1100 阅读 · 0 评论 -
Python爬虫学习获取腾讯新闻并存入Csv文件
with open('09_腾讯新闻.csv','a+') as f: 这样子写入的话产生的csv文件每行后面都会多一条空行,添加newline=''即可消除空行;即with open('09_腾讯新闻.csv','a+',newline='') as f:import requestsimport jsonimport csvimport osheaders={ 'referer': 'https://news.qq.com/', 'user-agent': ...原创 2021-01-26 16:50:41 · 950 阅读 · 0 评论 -
Python爬虫学习获取腾讯新闻并存入Excel
import requestsimport jsonimport xlwtimport osheaders={ 'referer': 'https://news.qq.com/', 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}rows=0 # 行数def .原创 2021-01-26 16:28:53 · 595 阅读 · 0 评论 -
Python获取腾讯新闻并存入txt文件
import requestsimport jsonheaders={ 'referer': 'https://news.qq.com/', 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}def getPage(url): try: re=r.原创 2021-01-25 23:08:13 · 948 阅读 · 0 评论 -
Python操作Json、Csv、Excel文件
一、Python操作Json文件import json# json中使用双引号data={ 'aa':11, 'bb':22, 'cc':'33'}# 字典转化jsonprint(json.dumps(data)) # 转化为json格式# 字典写入json文件with open('05_data.json','w') as f: json.dump(data,f)# json格式转字典格式json_data='{"ee":"11","rr":"p原创 2021-01-24 22:49:16 · 199 阅读 · 0 评论