python
youcijibi
这个作者很懒,什么都没留下…
展开
-
Python中Xpath一些研究,node与*的一些区别
主要是注意:child::node()与child::*的一些区别。原创 2023-01-17 13:53:49 · 537 阅读 · 1 评论 -
python-pptx处理替换文本
python中使用python-ppt库操作ppt来替换文本内容,包括图片在前方的原创 2022-07-07 18:09:23 · 1771 阅读 · 0 评论 -
2020年vscode新版本设置护眼主题
据说:青色、绿色能放松眼睛的睫状肌。人的眼睛在看黄色的时候会直接对焦在视网膜上,看红色时对焦在视网膜的后方(睫状肌要比看黄色时用力,才能把焦点拉到视网膜上)。但在看绿色时则对焦在视网膜前面(睫状肌比看黄色时放松),成像亦在视网膜之前,故可放松眼球的调节功能,睫状肌在看绿色时亦相对比红黄色放松。眼睛的睫状肌因而得到休息,减轻眼睛疲劳。效果如图:设置:这款主题是在亮色 Atom One Light Theme 主题上的基础进行修改的,需先安装这个主题,搜索即可:二、找到settings.原创 2022-03-16 17:44:52 · 9766 阅读 · 0 评论 -
vscode编写Python时函数无法自动补全
在VS Code界面,Ctrl+Shift+P,打开命令行;输入setting,选中首选项的JSON模式设置界面1.在用户设置中找到下面代码,将其设置为True "python.autoComplete.addBrackets": true2.如果以上设置不能生效,将下面代码设置为True"python.jediEnabled": true...原创 2022-03-16 17:27:27 · 3325 阅读 · 0 评论 -
vscode run python文件时无法加载文件.venv\Scripts\activate.ps1
vscode 运行 python文件时无法加载文件.venv\Scripts\activate.ps1运行python时提示无法加载文件.venv\Scripts\activate.ps1解决办法第一步:以管理员身份运行powershell第二步:执行:get-ExecutionPolicy 回复Restricted,表示状态是禁止的。第三步:执行:set-ExecutionPolicy RemoteSigned第四步:选择Y,回车如果第二步执行完成出现报错,可以忽略继续执行后续的步.原创 2022-03-16 14:51:43 · 1440 阅读 · 0 评论 -
selenium操作PhantomJS
1、下载PhantomJShttps://phantomjs.org/download.html2、代码示例#!/usr/local/bin/python3.7from selenium import webdriverimport time# phantomJS路径path = '/Users/mozili/Documents/PhantomJS/phantomjs-2.1.1-macosx/bin/phantomjs'# 创建浏览器对象browser = webdriver原创 2021-04-22 17:08:59 · 124 阅读 · 0 评论 -
PhantomJS的替代方案
提供了Selenium+Headless Firefox在Python上实现的方法:from selenium.webdriver import Firefoxfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.firefox.options import Optionsfrom selenium.webdriver.s原创 2021-04-22 17:07:54 · 1638 阅读 · 0 评论 -
Python中pymongo的简单使用
一,增import pymongomy_client = pymongo.MongoClient("mongodb://localhost:27017/")# db_list = my_client.list_database_names()# for db in db_list:# print(db)my_db = my_client['vdb']# col_list = my_db.list_collection_names()## for col in col_lis原创 2021-02-22 18:24:50 · 847 阅读 · 0 评论 -
Python使用pymysql操作数据库
一,安装:在python3中,自带pip3,所以可以直接使用pip3去安装所需的模块:pip3 install pymysql二,连接import pymysqlconnection = pymysql.connect(host='localhost', user='root', password='', ..原创 2021-02-21 22:33:34 · 335 阅读 · 0 评论 -
Python修改pip源为国内源
临时修改:在后边加个-i参数指定pip源,如下所示:pip3 install package_name -i https://pypi.tuna.tsinghua.edu.cn/simple永久修改:需要修改配置文件Windows:进入%APPDATA%目录,例如我的是C:\Users\Raytine\AppData\Roaming 新建pip文件夹,如果有则跳过 进入pip文件夹,新建pip.ini文件,设置pip源,如下所示为清华大学的pip源: [global]..原创 2021-02-21 22:22:04 · 322 阅读 · 1 评论 -
Python使用Socket / tcp实现简易静态文件服务器
import socketfrom multiprocessing import Processimport reHOME_DIR = './html'server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 允许端口被重复绑定,放在bind前server_socket.bind(.原创 2021-02-17 15:36:01 · 217 阅读 · 1 评论 -
Pycharm设置连接远程服务器同步到本地
第一步:需要设置远程服务器信息类型选择sftp,点击第二个箭头处配置服务器密码等信息,第三个箭头为需同步的远程服务器地址设置需要同步到本地的目录:这时就可以查看远程服务器上的信息了,通常出现在编辑器的右侧二,配置解释器为远程服务器上的python解释器 File ---> Settings---->搜索inter即可出现,点击设置按钮,点击Add,输入远程服务器的地址和用户输入密码并选择使用的python解释器后点击Finish即可此时即可选择刚刚原创 2021-02-17 15:10:22 · 3378 阅读 · 3 评论 -
Python简单服务器
import socketfrom multiprocessing import Processserver_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 允许端口被重复绑定,放在bind前server_socket.bind(('', 8000))server_socket.list.原创 2021-02-16 16:44:14 · 144 阅读 · 2 评论 -
Python中使用tcp时关于Listen的理解
原创 2021-02-13 16:49:26 · 660 阅读 · 0 评论 -
浏览器访问一个网站(baidu.com)的过程
原创 2021-02-13 15:23:12 · 2265 阅读 · 0 评论 -
路由器组网过程
如上图,当从pc2 ping pc3时,pc2所在ip段为192.168.1.x , pc3 所在ip段为192.168.2.x,不在同一i网段内。在数据包发送的过程中,dest_ip 与 src_ip不会发生变化,但是mac地址,会随着设备的不断变化而变化。...原创 2021-02-13 14:51:51 · 418 阅读 · 0 评论 -
集线器组网与交换机组网的区别
一,集线器的特点hub(集线器)能够完成多个电脑的链接 每个数据包的发送都是以广播的形式进行的,容易堵塞网络二,交换机的特点转发过滤:当一个数据帧的目的地址在MAC地址表中有映射时,它被转发到连接目的节点的端口而不是所有端口(如该数据帧为广播帧则转发至所有端口) 学习功能:以太网交换机了解每一端口相连设备的MAC地址,并将地址同相应的端口映射起来存放在交换机缓存中的MAC地址表中 交换机能够完成多个电脑的链接 每个数据包的发送都是以广播的形式进行的,容易堵塞网络 如果PC不知目标IP所对原创 2021-02-13 11:51:42 · 1107 阅读 · 0 评论 -
tcp模拟QQ聊天,未使用线程和进程时
服务端:from socket import *server_socket = socket(AF_INET, SOCK_STREAM)bind_addr = ('', 7788)server_socket.bind(bind_addr)server_socket.listen(5)while True: client_socket, client_addr = server_socket.accept() # 当有新的客户端连接进来,就会产生一个新的套接字,clien原创 2021-02-13 11:46:56 · 143 阅读 · 1 评论 -
Python使用tcp作为客户端
from socket import *client_socket = socket(AF_INET, SOCK_STREAM)ser_addr = ('192.168.100.195', 5566) # tcp作为客户端需要连接的服务端地址client_socket.connect(ser_addr)client_socket.send('哈哈'.encode('gbk'))recv_data = client_socket.recv(1024) # 执行到这里会阻塞等待接收服务端发送.原创 2021-02-13 11:20:13 · 117 阅读 · 0 评论 -
Python的tcp服务端
from socket import *tcpSocket = socket(AF_INET, SOCK_STREAM)bind_addr = ('', 5522)tcpSocket.bind(bind_addr)tcpSocket.listen(5)new_socket, client_addr = tcpSocket.accept()recv_data = new_socket.recv(1024)# recvfrom()也能用,返回的是元祖,第二个元素为None,因为accept返回.原创 2021-02-13 11:11:39 · 120 阅读 · 0 评论 -
python的进制转换及字节串大端小端
什么叫小端,什么叫大端?纯属个人理解,还未深入。小端即在内存中低位存储的是小数据,高位存的是大数据,比如12345(一万两千三百四十五),123存储在高位,45存储在低位,这就是小端。如上数据反过来,45存储在高位,123存储在低位则叫做大端。整数之间的进制转换:10进制转16进制: hex(16) ==> 0x10 16进制转10进制: int('0x10', 16) ==> 16二进制与八进制同理:bin(1) ==> 01 int('...原创 2021-02-12 15:28:43 · 6422 阅读 · 2 评论 -
Python使用UDP实现简易聊天室
from socket import *import threadingdef send_data(): while True: data = input('<<') # 行首会一直有<< 等待输入 udp_socket.sendto(data.encode('gbk'), (dest_ip, dest_port))def receive_data(): while True: content, add.原创 2021-02-11 15:46:12 · 514 阅读 · 3 评论 -
Python udp聊天室还未使用线程时,一些有意思的理解
还未使用线程时,一些有意思的理解from socket import *import threadingudp_socket = socket(AF_INET, SOCK_DGRAM)bind_addr = ('', 8899)udp_socket.bind(bind_addr)def send_data(addr): data = input('') # 只要终端上有数据就会被识别到里面,即虽然程序会在下方while True堵塞,当有输入时,data会 # 依次.原创 2021-02-11 14:48:11 · 122 阅读 · 2 评论 -
Python自定义类的实现方式(元类)
一,使用函数实现def upper_attr(class_name, class_parents, class_attr): new_attr = {} for name, value in class_attr.items(): if not name.startswith('__'): new_attr[name.upper()] = value # 将属性名转为大写后返回给创建的类 return type(class_name,原创 2021-02-10 16:59:08 · 1001 阅读 · 2 评论 -
Python调用父类初始化方法时不使用super()的一些问题
class Base(object): def __init__(self): print("enter Base") print("leave Base")class B(Base): def __init__(self): print("enter B") Base().__init__() print("leave B")class A(Base): def __init__(self.原创 2021-02-10 16:06:54 · 669 阅读 · 0 评论 -
Python多继承方式及顺序
深度优先 or 广度优先python2中经典类使用的是深度优先,新式类使用的是广度优先python3经典类与新式类都是广度优先。一图以蔽之:如图,B 继承 A, C 继承 A, D 继承 B 和 C。深度优先遍历是从 D 开始往上搜索到 B,若 B 没有数据,则继续往上搜索到 A,当A中再次没有时才会到C,即深度找不到才会到广度广度优先遍历是从 D 开始往上搜索到 B,若 B 没有数据,则搜索和 B 同级的 C 里的数据,若同级的 C 里还是没有数据,再继续往上搜索到 A ,即广原创 2021-02-10 15:15:32 · 520 阅读 · 2 评论 -
Python的super()一些探索
class Base(object): def __init__(self): print("enter Base") print("leave Base")class A(Base): def __init__(self): print("enter A") super(A, self).__init__() print("leave A")class B(Base): def __ini.原创 2021-02-10 15:04:36 · 120 阅读 · 0 评论 -
udp协议
1,udp协议是面向数据的,即是无连接的通信协议,因传输数据无需连接,且没有超时重发等机制,故而传输速度优于tcp。2,udp是无连接的协议,每个数据报文都是一个独立的信息。包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证。3,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。 UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内。4,UDP是一个不可靠的协议,发送原创 2021-02-10 09:48:42 · 626 阅读 · 0 评论 -
Python的GIL
什么是 GIL 呢?GIL 是最流行的 CPython 解释器(平常称为 Python)中的一个技术术语,中文译为全局解释器锁,其本质上类似操作系统的 Mutex(互斥锁)。GIL 的功能是:在 CPython 解释器中执行的每一个 Python 线程,都会先锁住自己,以阻止别的线程执行。当然,CPython 不可能容忍一个线程一直独占解释器,它会轮流执行 Python 线程。这样一来,用户看到的就是“伪”并行,即 Python 线程在交替执行,来模拟真正并行的线程。所以,在python中的多线程是伪原创 2021-02-09 21:14:32 · 146 阅读 · 1 评论 -
Python多进程中的异步回调 callback
from multiprocessing import Poolimport osimport timedef test(): print('test pid is %d and ppid is %d' % (os.getpid(), os.getppid())) for i in range(3): print('----i--- is %d' % i) time.sleep(1) return 'haha' # 这个返回值会传递给ca.原创 2021-02-09 17:21:41 · 1463 阅读 · 1 评论 -
Python多线程中threadingLocal的使用
在多线程使用中,往往各个线程需要获取一些数据,来回传递会很不方便,基于此有threadingLocal解决。一个ThreadLocal变量虽然是全局变量,但每个线程都只能读写自己线程的独立副本,互不干扰。ThreadLocal解决了参数在一个线程中各个函数之间互相传递的问题import threadingimport time# 创建全局ThreadLocal对象local_school = threading.local()def process_student(): #.原创 2021-02-09 17:04:06 · 539 阅读 · 0 评论 -
Python的队列queue在多线程中的应用
import threadingimport timefrom queue import Queueclass Producer(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): count = 0 while True: if queue.qsize() < 300: .原创 2021-02-09 16:26:51 · 612 阅读 · 0 评论 -
Python多线程的同步应用操作
首先解释下什么是同步:同步就是协同步调,按预定的先后次序进行运行。如:你说完,我再说。"同"字从字面上容易理解为一起动作其实不是,"同"字应是指协同、协助、互相配合。如进程、线程同步,可理解为进程或线程A和B一块配合,A执行到一定程度时要依靠B的某个结果,于是停下来,示意B运行;B依言执行,再将结果给A;A再继续操作。from threading import Thread, Lockimport timeclass Test1(Thread): def __init_原创 2021-02-09 15:35:07 · 316 阅读 · 0 评论 -
对于多线程死锁的银行家算法
[背景知识]一个银行家如何将一定数目的资金安全地借给若干个客户,使这些客户既能借到钱完成要干的事,同时银行家又能收回全部资金而不至于破产,这就是银行家问题。这个问题同操作系统中资源分配问题十分相似:银行家就像一个操作系统,客户就像运行的进程,银行家的资金就是系统的资源。[问题的描述]一个银行家拥有一定数量的资金,有若干个客户要贷款。每个客户须在一开始就声明他所需贷款的总额。若该客户贷款总额不超过银行家的资金总数,银行家可以接收客户的要求。客户贷款是以每次一个资金单位(如1万RMB等)的方式进行的原创 2021-02-09 14:51:13 · 140 阅读 · 0 评论 -
Python多线程的死锁
import threadingimport timedef test1(): if mutex_a.acquire(): print(str(threading.current_thread()) + '----do1----up') time.sleep(1) if mutex_b.acquire(): print(str(threading.current_thread()) + '----do1---down'.原创 2021-02-09 14:50:03 · 186 阅读 · 0 评论 -
Python默认线程名称及局部变量不会被其他线程篡改
import threadingimport timedef test(sleep_time): num = 1 time.sleep(sleep_time) num += 1 print('-----(%s)---num=%d--sleep=%d' % (threading.current_thread(), num, sleep_time))t1 = threading.Thread(target=test, args=(5,)) # 创建线程的代码在前.原创 2021-02-09 13:53:22 · 198 阅读 · 0 评论 -
Python互斥锁
from threading import Thread, Lockimport timeg_num = 0def test1(): global g_num for i in range(1000000): mutex_flag = mutex.acquire(True) # True表示堵塞,即如果这个锁在上锁前已被其他线程上锁,那么当前线程会一直卡在这里等待 # False表示非堵塞,即不管本次调用能否成功上锁,都不会卡在这.原创 2021-02-09 10:02:52 · 136 阅读 · 0 评论 -
Python多线程对全局数据进行修改时可能遇到的问题
from threading import Threadimport timeg_num = 0def test1(): global g_num for i in range(1000000): g_num += 1 print("---test1---g_num=%d" % g_num)def test2(): global g_num for i in range(1000000): g_num += 1.原创 2021-02-08 16:01:46 · 746 阅读 · 1 评论 -
Python进程与线程有什么不同,进程与线程对比
功能进程,能够完成多任务,比如 在一台电脑上能够同时运行多个QQ 线程,能够完成多任务,比如 一个QQ中的多个聊天窗口定义的不同 进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必需的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 区别 一个程序至少有一个进程,一个进程至少有一个线程.原创 2021-02-08 11:40:42 · 121 阅读 · 3 评论 -
Python线程间共享全局变量
from threading import Threadimport timedef worker1(num): num.append(44) print('in worker1 g_num is', num)def worker2(num): time.sleep(1) # 保证worker1线程先执行完 print('in worker2 g_num is', num)g_num = [11, 22, 33]t1 = Thread(target.原创 2021-02-08 11:35:20 · 376 阅读 · 0 评论