python
python
小和尚敲木头
这个作者很懒,什么都没留下…
展开
-
TCP文件下载器(Python)
使用TCP编写一个文件下载器,分为客户端和服务器,此博客为上一篇的延伸,增加了文件读写编程。下载器服务器程序:import socket def send_file_client(new_client_socket, client_addr): # 1.接受客户端发过来的文件名 file_name=new_client_socket.recv(1024).decode("utf-8") print("客户端发下载的文件名:%s"%str(file_name))转载 2021-01-13 18:32:24 · 180 阅读 · 0 评论 -
AF_INET域与AF_UNIX域socket通信原理对比
1. AF_INET域socket通信过程典型的TCP/IP四层模型的通信过程。发送方、接收方依赖IP:Port来标识,即将本地的socket绑定到对应的IP端口上,发送数据时,指定对方的IP端口,经过Internet,可以根据此IP端口最终找到接收方;接收数据时,可以从数据包中获取到发送方的IP端口。发送方通过系统调用send()将原始数据发送到操作系统内核缓冲区中。内核缓冲区从上到下依次经过TCP层、IP层、链路层的编码,分别添加对应的头部信息,经过网卡将一个数据包发送到网络中。经过网络路由到转载 2021-01-13 18:52:02 · 355 阅读 · 1 评论 -
socket发信息
例子以下是使用TCP / IP协议的四个最小示例程序:一台服务器,该服务器回显它收到的所有数据(仅为一个客户端提供服务),以及一个使用它的客户端。注意,服务器必须执行序列socket(), bind(),listen(),accept()(可能重复accept(),以服务一个以上的客户端),而一个客户端只需要在序列socket(),connect()。另请注意,服务器不在sendall()/recv()侦听的套接字上,而是/返回的新套接字 accept()。前两个示例仅支持IPv4。# 服务端imp翻译 2021-01-16 12:04:13 · 406 阅读 · 0 评论 -
Python实现HTTP服务器(五)长连接HTTP服务器
HTTP长连接与短连接区别,参考https://www.jianshu.com/p/3fc3646fad80,一个网页中包含多个HTML,CSS,如果是短连接,访问一个页面时需建立多个TCP连接,而长连接只需要建立一次TCP即可。因为socket是不关闭的,长连接在response数据时需要设置数据的长度。import reimport socket def service_client(new_socket,request): """为这个客户端返回数据""" # 接收转载 2021-01-13 18:39:18 · 1478 阅读 · 0 评论 -
Python实现HTTP服务器(一)
1.建立一个TCP服务器2.浏览器发送请求request3.服务器发送response给浏览器服务器代码如下:import socket def service_client(new_socket): """为这个客户返回数据""" # 1.接收浏览器发送过来的请求,即HTTP请求 # GET / HTTP/1.1 request=new_socket.recv(1024) print(request) # 2.返回HTTP格式的数据转载 2021-01-13 18:33:53 · 538 阅读 · 0 评论 -
Python实现HTTP服务器(三)线程、进程、协程实现多任务
1.线程、进程实现多任务HTTP服务器import reimport socketimport multiprocessingimport threading def service_client(new_socket): """为这个客户端返回数据""" # 接收浏览器发送过来的请求,即HTTP请求 request=new_socket.recv(1024) request=request.decode("utf-8") # 解码 reques转载 2021-01-13 18:37:10 · 214 阅读 · 0 评论 -
python socket 发送图片
服务端# -*- coding=utf-8 -*-import socketimport threadingimport sysimport osimport structdef deal_data(conn, addr): print('Accept new connection from {0}'.format(addr)) while True: fileinfo_size = struct.calcsize('128sl') # linux 和 w转载 2021-01-16 14:50:42 · 1253 阅读 · 0 评论 -
UDP聊天小程序+多线程(Python)
import socket def send_msg(udp_socket): dest_ip=input("输入对方ip:") dest_port=int(input("输入对方端口:")) send_data=input("输入消息:") udp_socket.sendto(send_data.encode("utf-8"),(dest_ip,dest_port)) # encocde为编码def recv_msg(udp_socket): rev_da转载 2021-01-13 18:29:17 · 132 阅读 · 1 评论 -
Python实现HTTP服务器(二)返回指定的html页面
通过前一篇博客我们可以了解,当在浏览器端输入127.0.0.1:7890时会发送request请求,格式为GET / HTTP/1.1,如果指定访问页面输入127.0.0.1:7890/index.html时request请求,格式为GET /index.html HTTP/1.1。因此我们可以通过正则表达式提取出index.html,然后将本地的index.html读取发送给浏器,得到相应的页面。import reimport socket def service_client(new_so转载 2021-01-13 18:35:49 · 1891 阅读 · 0 评论 -
TCP客户端服务器(Python)
TCP客户端程序:import socket def main(): # 创建tcp tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 链接套接字 # sever_ip=input("输入对方ip:") # sever_port=int(input("输入对方端口:")) # sever_addr=(sever_ip,sever_port) tcp转载 2021-01-13 18:30:55 · 124 阅读 · 0 评论 -
Python实现HTTP服务器(四)单进程线程非阻塞实现多任务
上篇博客使用了进程、线程、协程实现了多任务的HTTP服务器。本文使用非阻塞单线程进程实现多任务。1.设置套接字为非阻塞状态2.建立一个列表用来装交互的套接字3.遍历列表,如果收到数据则进行交互,如果收到的数据为空,则说明浏览器关闭,关闭套接字,从列表中删除这个套接字import socketimport time tcp_server_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)tcp_server_tcp.bind(("",转载 2021-01-13 18:38:13 · 163 阅读 · 0 评论 -
pandas 日期处理
pandas 日期处理依赖datatime这是日期求天数 得到的是 timedelta64类型 想要转为 int 类型 方便后面计算。data["F"] = pd.DataFrame(pd.to_datetime(data['LOAD_TIME']) - pd.to_datetime(data['FFP_DATE']))import numpy as npdata["F"]=(data["F"] / np.timedelta64(1, 'D')).astype(int)后面是分原创 2020-08-18 17:04:39 · 280 阅读 · 0 评论 -
用Cython加速Python到“起飞”
Cython-logo事先声明,标题没有把“Python”错打成“Cython”,因为要讲的就是名为“Cython”的东西。Cython是让Python脚本支持C语言扩展的编译器,Cython能够将Python+C混合编码的.pyx脚本转换为C代码,主要用于优化Python脚本性能或Python调用C函数库。由于Python固有的性能差的问题,用C扩展Python成为提高Python性能常用方法,Cython算是较为常见的一种扩展方式。我们可以对比一下业界主流的几种Python扩展支持C语...转载 2020-11-17 14:45:19 · 314 阅读 · 0 评论 -
日志 重定向
Python 将终端 Terminal 或者控制台的输出结果输出至 log 文件 以文件形式保存重定义 Logger 类,然后 sys.stdout = Logger(“log文件名及路径”)import sysclass Logger(object): def __init__(self, logFile ="Default.log"): self.terminal = sys.stdout self.log = open(logFile,'a')转载 2020-09-11 15:48:11 · 1508 阅读 · 0 评论 -
python中or关键字在变量赋值时的用法
在python中,某些情况下,or可以替换if else 达到代码简化的作用,比如在变量赋值时。基本用法:v = p1 or p2它完成的效果等同于:if p1: v = p1else: v = p2 看看下面这段代码:# -*- coding=UTF-8 -*- '''Created on 2013-6-6@author: lingjun.gong''' a = 1 or 2print aa = None or 2print aa = [转载 2020-11-18 16:57:30 · 1413 阅读 · 1 评论 -
尝试cython和openmp
初衷最近学用python,python不愧是为程序员考虑的编程语言,写起来很快很方便,大大节省开发效率。而且,对于小规模程序,运行效率也不错。前两天写了一篇博文《【总结】学用python写程序》,大大地夸奖了python一番。不过这两天,我就受到“诅咒”了。数据规模稍微大一点,python的执行效率的差劲就体现出来了。这两天写的一个程序,尽管在我所知道的范围内,我做了python语言能做的优化,不过程序依然运行了五个小时之久。想把程序改成c++的,不过开发时间较长,而且未来可能还有改动。所以暂罢。上.转载 2020-11-16 10:22:21 · 607 阅读 · 0 评论 -
Python中append和extend的区别
编者注:本文主要参考了《Python核心编程(第二版)》网上有很多对这两个函数的区别讲解,但我觉得都讲的不是很清楚,记忆不深刻。这样解释清楚且容易记住。list.append(object) 向列表中添加一个对象objectlist.extend(sequence) 把一个序列seq的内容添加到列表中music_media = ['compact disc', '8-track tape', 'long playing record']new_media = ['DVD Audio disc',转载 2020-11-19 11:37:39 · 92 阅读 · 0 评论 -
Python中下划线的5种含义
本文介绍了Python中单下划线和双下划线(“dunder”)的各种含义和命名约定,名称修饰(name mangling)的工作原理,以及它如何影响你自己的Python类。单前导下划线:_var单末尾下划线:var_双前导下划线:__var双前导和末尾下划线:__ var __单下划线:_在文章结尾处,你可以找到一个简短的"速查表",总结了五种不同的下划线命名约定及其含义,以及一个简短的视频教程,可让你亲身体验它们的行为。让我们马上开始!1. 单前导下划线 _var当涉及到变量和方法名转载 2021-01-06 18:51:51 · 353 阅读 · 1 评论 -
对比 | Python中超级好用的“列表解析式”、“字典解析式”、“集合解析式”
1. 列表、字典、集合概念说明在讲述这三个概念之前,首先我们需要对列表、字典、集合三个概念,做一个简单的说明。2. 列表解析式列表推导式,在日常编程中发挥着很重要的作用(尤其是利用python做数据清洗的时候),它能够简化我们的代码,极其好用,我这里将它的常见3种用法给大家总结一下。① 一般形式语法格式:[ expression for i in iterable ]x = [1, 3, 5, 7, 9]y = [i**2 for i in x]print(y)结果如下:② 带转载 2020-11-13 09:57:18 · 123 阅读 · 0 评论 -
Python杂谈: __init__.py的作用
我们经常在python的模块目录中会看到 "__init__.py" 这个文件,那么它到底有什么作用呢? 1. 标识该目录是一个python的模块包(module package) 如果你是使用python的相关IDE来进行开发,那么如果目录中存在该文件,该目录就会被识别为 module package 。2. 简化模块导入操作 假设我们的模块包的目录结构如下:.└── mypackage ├── subpackage_1 │&nbs...转载 2020-11-16 16:19:02 · 135 阅读 · 0 评论 -
数据类型
数据类型进制转换十进制基数0~9,逢10进1示例:123 = 1* 10^2 + 2 * 10^1 + 3 * 10^0 = 100 + 20 + 3 = 123转二进制:除2取余,倒序书写22 = 0b10110二进制基数0和1,逢2进1示例:0b110100 = 2^5 + 2^4 + 2^2 = 32 + 16 + 4 = 52八进制基数0~7,逢8进1示例:0o123 = 1 * 8^2 + 2 * 8^1 + 3 * 8^0 = 64 + 16 + 3原创 2020-08-22 18:14:44 · 272 阅读 · 0 评论 -
python解析.pyd文件
有的时候,为了对python文件进行加密,会把python模块编译成.pyd文件,供其他人调用。拿到一个.pyd文件,在没有文档说明的情况下,可以试试查看模块内的一些函数和类的用法。首先 import XXX(pyd的文件名)然后直接print(dir(XXX))print(help(xxx))其中dir( ) 列出了属性和方法而hlep()直接列出了其中的函数以及参数,并且是源码的函数名和类型,非常直观。例如我这里的一个例子,输出如下:['RC', '__doc__', '__file__转载 2020-11-16 17:06:00 · 10376 阅读 · 0 评论 -
UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xe7‘ in position 295: illegal multibyte seq
python爬虫解决UnicodeEncodeError: ‘gbk’ codec can’t encode character ‘\xbb’ in position错误代码:with open("baidu.html",'w+') as f: f.write(results.text)正确代码:with open("baidu.html",'w+',encoding="utf-8") as f: f.write(results.text)在抓取网页上面的一些源代码的时候原创 2020-08-10 16:58:50 · 3664 阅读 · 3 评论 -
MySQLdb._exceptions.ProgrammingError: (1064, <NULL>)
查了变天的问题 怀疑是 字符串格式的问题当 使用 单引号时报MySQLdb._exceptions.ProgrammingError: (1064, <NULL>)sql3 = 'update mysite_yaoinfos set yaodian="{}" where id>=11133 and name = "{}"'.format(i["yaodian"], i["name"])使用双引号 报 MySQLdb._exceptions.ProgrammingError: (原创 2021-09-28 11:05:58 · 693 阅读 · 0 评论 -
python虚拟环境拷贝到另一台电脑,不能直接使用的问题
最近折腾一个django的项目,想快速部署到服务器看看效果。virtualenv号称python三大神器之一,因此我打算把pycharm自动创建的虚拟环境直接拷贝到服务器运行代码。谁知出现了问题。 在pycharm上创建的虚拟环境是3.6.4服务器环境上python3版本为3.6.9 按道理说,把本机的虚拟环境从本机拷贝到服务器,服务器就能直接运行django代码但是情况却不是这样。首先看这是服务器真机的python版本3.6.9 把项目和虚拟环境.转载 2021-08-06 18:49:02 · 6734 阅读 · 0 评论 -
Python 函数装饰器
装饰器(Decorators)是 Python 的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短,也更Pythonic(Python范儿)。大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁。首先,让我们讨论下如何写你自己的装饰器。这可能是最难掌握的概念之一。我们会每次只讨论一个步骤,这样你能完全理解它。一切皆对象首先我们来理解下 Python 中的函数: def hi(name="yasoob"): re.翻译 2021-05-03 18:09:59 · 71 阅读 · 0 评论 -
python 文件服务器
python 文件服务器python -m http.server 8000指定文件位置python -m http.server --directory /tmp/或python -m http.server --d /tmp/原创 2021-04-23 13:47:24 · 131 阅读 · 0 评论 -
python模拟上传多张图片
后台 flask post接口后台代码使用 requests 模仿 (调自己接口)res = requests.post(url=url, data=data, files=list_pic)def read_fakeimage(path, filenamelist): list_pic = [] data = () for pic in filenamelist: # with open(path + pic, 'rb') as p:原创 2021-03-31 16:22:03 · 1307 阅读 · 0 评论 -
Python中操作mysql的pymysql模块详解
前言pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。本文测试python版本:2.7.11。mysql版本:5.6.24一、安装pip3 install pymysql二、使用操作1、执行SQL#!/usr/bin/env pytho# -*- coding:utf-8 -*-import pymysql # 创建连接conn = pymysql.connect(host='1转载 2021-03-19 09:01:45 · 702 阅读 · 0 评论 -
python中的fstring的 !r,!a,!s
首先是fstring的结构f ' <text> { <expression> <optional !s, !r, or !a> <optional : format specifier> } <text> ... '‘!s’在表达式上调用str(),’!r’调用表达式上的repr(),’!a’调用表达式上的ascii()1.默认情况下,f-string将使用str(),但如果包含转换标志,则可以确保它们使用repr () !class C转载 2021-01-11 18:02:42 · 1269 阅读 · 0 评论 -
python 遍历一个空列表
当遍历空列表时 程序不会向下执行了。原创 2020-12-24 15:49:21 · 1776 阅读 · 1 评论 -
windows配置Python多版本共存
1.下载完python 下载地址2.配置环境变量我电脑上装的有3.7的 我现在使用3.8版先添加环境变量名在path里加入路径3.修改名字 不能和3.7的重名pip这三个程序是一样的 其他的不需要可以删掉打开要修改名字的pip.exe,把启动文件名字改了。(不然会找不到文件)3.测试原理:安装多个版本的方法就是避免变量重名的情况,比如python3.7和python3.8版本安装完毕后都有默认的python执行脚本和一个pip的脚本,我们只需要在path环境中让他们找到原创 2020-12-05 11:43:08 · 458 阅读 · 0 评论 -
如何创建一个特定版本的python虚拟环境
解决的问题:安装python3.6.5虚拟环境。当前的window安装的版本为python3.7参考:1,首先下载需要的python版本2,安装3,用已有的大环境创建虚拟环境(1)安装virtualenv(2)切换到你需要建立虚拟环境的目录执行(注意:–python=E:…)注:横杠上的表示切换到目录,后面执行的就是在该目录下建立3.6.5的python(3)启动虚拟环境...转载 2020-12-05 11:26:04 · 814 阅读 · 0 评论 -
VisualStudio解决方案配置Debug和Release选项
前言本文章基于VisualStudio2017编写前两天腾讯电话面试中面试官问到既然平时有使用VS进行项目调试,那介绍一下VS中Debug选项和Release选项有什么不同,我听到这问题时,知道Debug选项是我们平时使用VS要开始运行时点的那一个按钮:但是这个release是真的没有注意到过,我甚至都不确定面试官说的英文单词是什么。于是非常尴尬地,我跟面试官重复了好几次 “啊?release?” “re–lea–se?” 这个问题在我表示不理解后作罢…今天在用VS调试数据挖掘的线性回归作业,这个转载 2020-11-17 18:14:08 · 2328 阅读 · 0 评论 -
python 定时任务 Apscheduler
官网地址讲解1讲解21 简介APScheduler的全称是Advanced Python Scheduler。它是一个轻量级的 Python 定时任务调度框架。APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令。同时,它还支持异步执行、后台执行调度任务。2 安装#使用 pip 包管理工具安装 APScheduler 是最方便快捷的。 pip install APScheduler# 如果出现因下载失败导致安装不上的情况,建议使用原创 2020-10-30 10:47:10 · 224 阅读 · 0 评论