Python/Linux高级编程总结归纳
树新风\(^o^)/~
大智若愚
展开
-
Linux常用命令总结1
ls:显示当前目录内容,后面可加路径参数表示显示指定路径内容,后面也可跟选项 -a 显示全部文件/目录,-l 以列表的形式显示文件/目录的详细信息,-h与-l搭配用来显示用户友好的数据大小单位,-i显示文件编号。mkdir:创建一个新的文件夹,后面可跟选项-p用来创建多级目录,-i表示交互式操作。touch:创建一个文件,若文件已存在则修改文件最后修改时间(不会覆盖文件)。rm:删除一...原创 2018-06-23 17:11:54 · 853 阅读 · 0 评论 -
python中property的使用
第一种用法:class Student(object): def __init__(self, name): self.__name = name @property def info(self): return self.__name @info.setter def info(self,name): ...原创 2018-07-17 14:55:42 · 927 阅读 · 0 评论 -
python中组包拆包与不定参数
不定参数:*args用来接收除位置参数和键值对以外的所有参数组包为一个元组,在传参时也可以用来把元组拆包成一个个元素。**kwargs用来接收除位置参数 以外的所有键值对参数组包为一个字典,在传参时也可以用来把字典拆包成一个个键值对。在python没有像java和c那样的重载,就是因为使用了不定参数解决了参数个数不确定的问题。def func01(a, b, *args, **k...原创 2018-07-17 15:07:35 · 1407 阅读 · 0 评论 -
python多重继承/多继承相关
1 使用父类名.方法名调用父类方法class Parent(): def __init__(self,name): self.name = name print("Parent的init方法被调用")class Son1(Parent): def __init__(self,name,age): self.age = age...原创 2018-07-17 16:52:49 · 1879 阅读 · 0 评论 -
使用xpath爬取贴吧图片
import timefrom lxml import etreeimport requestsimport osimport threadingdef down_image(url,kw): data = requests.get(url).content name = url[-10:] print(name) print("正在下载%s...%s...原创 2018-07-05 08:08:16 · 2930 阅读 · 6 评论 -
使用TCP套接字模拟浏览器GET请求
import socketdef main(): tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) tcp_socket.connect(("www.baidu.com",80)) request_line = "GET /111 HTTP/1.1\r\n" request_header ...原创 2018-07-05 16:28:37 · 1569 阅读 · 0 评论 -
用python实现一个miniweb框架
miniFrame.pyfrom pymysql import connecturl2path_list = {}#路由装饰器def router(data): def func_out(func): url2path_list[data] = func def func_in(): return func ...原创 2018-07-18 17:11:47 · 2186 阅读 · 0 评论 -
使用python模拟web服务器
import socketimport reimport geventfrom gevent import monkeymonkey.patch_all()class HttpServer(object): def __init__(self): server_socket = socket.socket(socket.AF_INET,socket.SOCK_...原创 2018-07-06 17:42:47 · 1473 阅读 · 0 评论 -
python中装饰器的使用
使用闭做包装饰器def filter(func): def test(username,password): if username == 'admin' and password == '123456': func(username,password) else: print('登录失败') r...原创 2018-07-14 17:22:02 · 906 阅读 · 0 评论 -
python的深拷贝和浅拷贝
深拷贝与浅拷贝的区别:深拷贝是递归拷贝,而浅拷贝只为最外层数据开辟新的内存的空间(如果数据内部还有引用 浅拷贝不会开辟新的内存空间)。其中深拷贝与浅拷贝对于不可变类型数据都是直接引用。import copya = [1,2,3]b = [4,5,6]c = [a,b]d = copy.copy(c)a[0] = 10print(d)d = copy.deepcopy(c)...原创 2018-07-15 14:42:24 · 929 阅读 · 0 评论 -
python中GIL锁相关
GIL锁(全局解释器锁)只存在于Cpython解释器中,而Jpython、PyPy等解释器中则不存在GIL锁。GIL锁的作用:保证每个进程中每次只有一个线程可以获得执行权,解决多线程之间数据的完整性和状态同步,保证了线程安全。GIL锁的弊端:使用Cpython解释器时,GIL锁会使多线程的执行效率很低,无法充分利用CPU资源,基本等同于单线程执行。(在进行科学运算等需要长时间使用CPU资源...原创 2018-07-15 15:21:04 · 917 阅读 · 0 评论 -
Redis常用命令
#开启Redis服务redis-server#连接本地Redis数据库redis-cli#连接远程Redis数据库redis-cli -h host -p port#测试命令结果返回PONG表示正常ping#选择数据库,默认有16个数据库编号0-15select 0#数据操作#删除全部数据flushall#String字符串操作#添加/修改键值对set na...原创 2018-08-16 20:09:53 · 2450 阅读 · 0 评论 -
MVC和MVT设计模式
MVC:Model-View-ControllerModel: 封装对数据库的访问View: 封装结果 生成html页面Controller: 封装视图的业务逻辑处理 MVT:Model-View-TemplateModel: 与MVC中的Model功能相同,封装对数据库的访问View: 与MVC中的Controller功能相同,封装视图的业务逻辑处理Tem...原创 2018-08-31 17:16:30 · 1884 阅读 · 0 评论 -
猴子补丁对多线程的影响
最近在写pyqt项目时遇到一个问题,在开启猴子补丁的前提下如果再使用多线程会导致多线程阻塞,无法继续执行。查阅资料后得出如下解决方案:使用monkey.patch_all(thread=False) 或gevent.sleep()...原创 2018-09-02 14:23:24 · 1684 阅读 · 0 评论 -
使用国内镜像源加速pip安装
pipy国内镜像目前有: http://pypi.douban.com/ 豆瓣http://pypi.hustunique.com/ 华中理工大学http://pypi.sdutlinux.org/ 山东理工大学http://pypi.mirrors.ustc.edu.cn/ 中国科学技术大学 对于pip这种在线安...转载 2019-03-09 11:14:03 · 453 阅读 · 0 评论 -
python中re模块的使用
re.match(正则,待匹配的字符串,匹配模式)从开头开始匹配,返回值为一个包含匹配结果的正则对象 其中匹配模式常用的有:re.I不区分大小写,re.A使用ASCII码编码匹配。re.search(正则,待匹配的数据) 全文搜索,返回值是一个包含匹配结果的正则对象。re.findall(正则,待匹配的数据) 返回值是一个列表包含所有匹配结果re.sub(正则,待替换的字符串,替换的次...原创 2018-07-04 10:33:49 · 1048 阅读 · 0 评论 -
正则表达式常用语法
匹配单个字符:\d 数字\D 非数字\s 空白字符\S 非空白字符\w 字母数字下划线\W 非字母数字下划线. 任意字符(除\n以外)[] 列表中任一字符匹配多个字符:+ 匹配前面的字符至少出现一次* 匹配前面的字符至少出现0次{a} 匹配前面的字符出现a次{a,b} 匹配前面的字符出现a~b次? 匹配前面的字符出现0次或1次匹配开头和结...原创 2018-07-04 10:21:26 · 878 阅读 · 0 评论 -
Linux常用命令总结2
>:表示重定向。cat:查看文件内容,也可用于文件合并,cat 文件1 文件2 > 新文件,其中>>表示追加。more:用于分屏显示文件内容。|:表示管道,一个命令的输出可以作为另一个命令的输入,命令1|命令2.ln:建立链接,后面加选项-s表示软链接,类似于Windows系统中的快捷方式,默认选项表示建立硬链接,硬链接与原文件名指向同一个文件。grep...原创 2018-06-24 15:34:51 · 902 阅读 · 0 评论 -
UDP/TCP协议
udp:优点 无连接、传输速度快、资源占用率低。缺点 不安全、可能会丢包。小案例 用Python实现udp收发数据:#使用udp实现收发数据from socket import *udpSocket = socket(AF_INET,SOCK_DGRAM)udpSocket.bind(('',9999))recvdata,ip = udpSocket.recvfrom(1024)ud...原创 2018-06-27 17:46:49 · 1553 阅读 · 0 评论 -
python模拟多线程TCP服务器
import threadingimport socketdef client_thread(client_socket): while 1: data = client_socket.recv(2048) if data : print('接收到了客户端的数据:' + data.decode()) c...原创 2018-06-29 15:21:06 · 1409 阅读 · 0 评论 -
多线程的资源竞争问题复现以及互斥锁
在Python中多线程的创建、调用方式与Java基本一致。多线程可以共享全局变量,由此引出资源竞争而导致的问题。#资源竞争导致的问题复现import threadingnum = 0def work1(): global num for i in range(1000000):#数要足够大才能显现出问题 num += 1def work2(): ...原创 2018-06-29 15:49:00 · 1572 阅读 · 0 评论 -
使用多进程拷贝文件
#多进程拷贝文件import osimport multiprocessing.processdef copy_file(file_name,src_path,dest_path): path = src_path + "/" + file_name new_path = dest_path + "/" + file_name if os.path.isfile(...原创 2018-06-30 17:17:28 · 992 阅读 · 0 评论 -
python中进程间通信
进程之间不能像线程那样共享全局变量,所以进程间通信需要使用队列。#进程间使用Queue通信import timeimport multiprocessingdef work1(q): while 1: print(q.get()) time.sleep(1)def work2(q): while 1: q.put("...原创 2018-06-30 19:27:55 · 881 阅读 · 0 评论 -
vim编辑器使用总结
vim编辑器是一款十分强大的命令行编辑器,它是基于vi的进化版,由于它可以装很多插件,所以有很强的定制性。vim编辑器有三种模式:命令模式、编辑模式、末行模式。从命令模式按i可以进入编辑模式,在编辑模式按esc键可以退出编辑模式进入命令模式,在命令模式按:可以进入到末行模式。vim在命令模式下常用快捷键:i:在当前光标前插入a:在当前光标后插入I:在当前行首插入A:在当前行末插入o:在当前行后新插...原创 2018-06-26 16:01:43 · 994 阅读 · 0 评论 -
mysql常用语法
select version();--查询当前数据库版本select now();--查询当前时间select database();--查询当前使用的数据库show tables;--显示所有表show databases;--显示所有数据库create database classes;--创建一个数据库use classes;--使用这个数据库create table stu...原创 2018-07-08 19:22:31 · 900 阅读 · 0 评论 -
爬取糗事首页数据
#爬取糗事百科首页数据import requestsfrom lxml import etreedef load_page(url): headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0...原创 2018-07-08 21:35:49 · 926 阅读 · 0 评论 -
python自定义可迭代对象、迭代器
#自定义可迭代对象和迭代器用while实现for循环的迭代过程class MyList(): def __init__(self): self.my_list = [1,3,5,7,8,9] def __iter__(self): return MyListIter(self.my_list)class MyListIter(): ...原创 2018-07-02 15:51:24 · 1476 阅读 · 0 评论 -
python中的生成器
#使用生成器生成斐波那契数列def fibo(): n1 = 0 n2 = 1 print(n1) yield print(n2) yield while 1: n1,n2 = n2, n1+n2 print(n2) yieldif __name__ == "__main__": ...原创 2018-07-02 16:33:46 · 853 阅读 · 0 评论 -
python协程
#模拟协程import timedef work1(): for i in range(5): print("work1") time.sleep(0.5) yielddef work2(): for i in range(5): print("work2") time.sleep(0.5)...原创 2018-07-02 17:47:12 · 812 阅读 · 0 评论 -
使用协程下载多个图片
import urllib.requestimport timeimport geventfrom gevent import monkeymonkey.patch_all()def down_image(url,image_name): response = urllib.request.urlopen(url) data = response.read() ...原创 2018-07-02 19:40:57 · 1267 阅读 · 0 评论 -
爬取某直播网站首页小姐姐的照骗
#使用正则表达式取出网页中图片url并下载图片import timeimport reimport urllib.requestimport multiprocessingimport osdef down_image(url,i,name): response = urllib.request.urlopen(url) data = response.read()...原创 2018-07-03 19:11:35 · 1586 阅读 · 0 评论 -
Linux批量结束进程命令
ps aux | grep chrome | grep -v grep | awk ‘{print $2}’ | xargs kill -9原创 2019-05-12 15:34:06 · 2412 阅读 · 0 评论