
python
文章平均质量分 69
-牧野-
这个作者很懒,什么都没留下…
展开
-
python PIL Image 图像处理基本操作
1. 图片加载、灰度图、 显示和保存# Created by 牧野 优快云from PIL import Imageimg = Image.open('01.jpg')imgGrey = img.convert('L')img.show()imgGrey.show()img.save('img_copy.jpg')imgGrey.save('img_gray.jpg')...原创 2019-11-07 21:46:24 · 43295 阅读 · 6 评论 -
Ubuntu+anaconda环境里安装opencv
在Ubuntu的Anaconda环境下安装OpenCV比较方便,直接在终端中输入以下命令:conda install --channel https://conda.anaconda.org/menpo opencv这个方式安装的是OpenCV2.4.11版本,如果要安装OpenCV 3版本,把上述命令中的 opencv换成 opencv3就行了,安装的是3.2.0版本...原创 2017-09-13 22:37:23 · 24773 阅读 · 8 评论 -
python使用progressbar显示进度条
progressbar安装:pip install progressbar用法一# -*- coding=utf-8 -*-import timefrom progressbar import *total = 1000def dosomework(): time.sleep(0.01)progress = ProgressBar()for i in progress(...原创 2018-03-12 12:26:17 · 62434 阅读 · 4 评论 -
ubuntu在anaconda2下安装anaconda3环境 && 在Pycharm中配置Python3
适合在已经装有anaconda2环境的机器上配置anaconda3环境(或在有anaconda3的环境下再配置2)。1. 下载 anaconda3下载地址: 推荐清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/2. 安装anaconda3环境py3是将会在目录 '~/anaconda2/envs/'下创建的文件夹名称,...原创 2018-02-12 19:04:57 · 1360 阅读 · 0 评论 -
“libgomp.so.1: version `GOMP_4.0' not found” || “libstdc++.so.6: version `CXXABI_1.3.8' not found”错误
类似问题还有 'ImportError ../lib/libstdc++.so.6: version `CXXABI_1.3.7' not found (required by xxx)'、 'ImportError ../lib/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by xxx)'等。这种报错情况一般出...原创 2017-10-26 20:24:41 · 8937 阅读 · 0 评论 -
python 绘图---2D、3D散点图、折线图、曲面图
python中绘制2D曲线图需要使用到Matplotlib,Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。1. 绘制折线图plt.plot() 可以用于绘制折线图。只传入一维的散点(n个)p1原创 2018-01-29 11:55:08 · 56993 阅读 · 3 评论 -
Pythond 读写HDF5文件
HDF(Hiearchical Data Format)是一种针对大量数据进行组织和存储的文件格式,可以存储不同类型的图像和数码数据的文件格式,并且可以在不同类型的机器上传输。HDF是美国国家高级计算应用中心(National Center for Supercomputing Application,NCSA)为了满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。它的通原创 2018-01-29 09:35:58 · 11211 阅读 · 2 评论 -
python中的编码和解码
计算机中常见的编码方式有多种,英文一般是ascii编码,其他有unicode,utf-8,gbk,utf-16等编码。常见编码方式:ASCII编码:ASCII是早期的编码,包含英文字母、数字和一些英文符号一共127个符号;Unicode编码:不同的语言有各自不同的编码方式,导致在多种语言环境下按照某一种固定的编解码方式会出现乱码。为了统一,制定了Unicode编码。Unicode把所有语言都统原创 2017-10-01 09:34:08 · 1954 阅读 · 0 评论 -
python2和python3 print输出不换行
python2 print不换行在print最后加上一个逗号,会把两个输出打印在同一行,不过两个输出之间有一个空格的间隔,例如:print '{0}'.format(123),print '{0}'.format(456)输出:123 456如果没有逗号:print '{0}'.format(123)print '{0}'.format(456)输出:123456python3 print不换行p原创 2018-01-18 20:41:56 · 84744 阅读 · 2 评论 -
Python assert 断言
assert断言语句用来声明某个条件是真的,其作用是测试一个条件(condition)是否成立,如果不成立,则抛出异常。assert一般用法:assert condition如果condition为false,就raise一个AssertionError出来。逻辑上等同于:if not condition: raise AssertionError()原创 2018-01-25 21:03:15 · 10467 阅读 · 0 评论 -
python中读写LMDB数据库
LMDB的全称是Lightning Memory-Mapped Database(快如闪电的内存映射数据库),它的文件结构简单,包含一个数据文件和一个锁文件:LMDB文件可以同时由多个进程打开,具有极高的数据存取速度,访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用LMDB库,访问时给文件路径即可。让系统访问大量小文件的开销很大,而LMDB使用内存映射的原创 2018-01-25 20:20:08 · 26147 阅读 · 4 评论 -
python中处理命令行参数的模块optpars
optpars是python中用来处理命令行参数的模块,可以自动生成程序的帮助信息,功能强大,易于使用,可以方便的生成标准的,符合Unix/Posix 规范的命令行说明。使用 add_option() 来加入选项,使用 parse_args() 来解析命令行。add_option()中参数第一个参数表示option的缩写,以单个中划线引导,例如-f、-d,只能用单个字母,可以使用大写;第二个参数表...原创 2018-03-09 12:32:19 · 2149 阅读 · 0 评论 -
python使用wget下载网络文件
wget是一个从网络上自动下载文件的自由工具。它支持HTTP,HTTPS和FTP协议,可以使用HTTP代理。ubuntu 安装wgetpip install wget从网络或本地硬盘下载文件(并解压)# -*- coding: utf-8 -*-import wget, tarfileimport os# 网络地址DATA_URL = 'http://www.robots.ox.ac....原创 2018-03-16 13:24:49 · 39264 阅读 · 4 评论 -
Python中使用 logging 和 traceback 模块记录日志和跟踪异常
logging模块logging模块用于输出运行日志,可以设置不同的日志等级,保存信息到日志文件中等。 相比print,logging可以设置日志的等级,控制在发布版本中的输出内容,并且可以指定日志的输出格式。1. 使用logging在终端输出日志#!/usr/bin/env python# -*- coding:utf-8 -*-import logging # 引入log...原创 2019-03-25 17:45:46 · 14151 阅读 · 2 评论 -
python使用pandas和xlsxwriter读写xlsx文件
已有xlsx文件如下:1. 读取前n行所有数据# coding: utf-8import pandas as pd# 1. 读取前n行所有数据df = pd.read_excel('school.xlsx')#读取xlsx中第一个sheetdata1 = df.head(7) # 读取前7行的所有数据,dataFrame结构data2 = df.valu...原创 2019-03-08 16:01:54 · 29624 阅读 · 6 评论 -
python装饰器限制函数运行时间,超时退出
实际项目中会涉及到需要对有些函数的响应时间做一些限制,如果超时就退出函数的执行,停止等待。可以利用python中的装饰器实现对函数执行时间的控制。python装饰器简单来说可以在不改变某个函数内部实现和原来调用方式的前提下对该函数增加一些附件的功能,提供了对该函数功能的扩展。方法一. 使用 signal使用signal有所限制,需要在linux系统上,并且需要在主线程中使用。...原创 2018-09-26 11:10:56 · 31651 阅读 · 2 评论 -
Flask上传本地图片并在页面上显示
使用Flask远程上传图片到服务器,并把获取到的图片显示到前端页面上。 方法一 目录结构:'static/images' 文件夹用来存放上传过来的图片 ‘templates’文件夹下的两个html文件定义显示页面 upload_pictures.py 是工程代码upload_pictures.py 代码:# coding:utf-8from flask...原创 2018-08-23 21:15:49 · 68130 阅读 · 19 评论 -
python中类的创建和实例化
python中同样使用关键字class创建一个类,类名称第一个字母大写,可以带括号也可以不带括号;python中实例化类不需要使用关键字new(也没有这个关键字),类的实例化类似函数调用方式;# coding: utf-8# 创建一个类,类名称第一个字母大写,可以带括号也可以不带括号class Student(): student_count = 0 def ...原创 2018-07-27 09:24:15 · 55652 阅读 · 3 评论 -
python 兼容中文路径 + 目标文件是否是图像格式判断
1. 中文路径兼容python程序如果路径中包含中文字符,不加处理会有类似报错:'ascii' codec can't decode byte 0xxx in position xx:ordinal not in range(128)解决方法:path = unicode(path,'utf-8')2. 文件是否是图像格式判断python中的标准库 imghdr 可以用来判断文件是否是图片, im...原创 2018-04-12 20:13:33 · 2810 阅读 · 0 评论 -
python中几个实用的文件操作
1. 判断指定目录是否存在:os.path.exists(input_folder)2. 判断指定目录是不是文件夹os.path.isdir(input_folder)3. 判断指定目录是不是文件os.path.isfile(input_folder)4. 判断指定文件是不是图片(判断给定文件是何种图片类型)import imghdrimg_list= {'jpg','bmp','png','jp...原创 2018-04-17 22:03:13 · 713 阅读 · 2 评论 -
python sys.path.append()和sys.path.insert()
python程序中使用 import XXX 时,python解析器会在当前目录、已安装和第三方模块中搜索 xxx,如果都搜索不到就会报错。使用sys.path.append()方法可以临时添加搜索路径,方便更简洁的import其他包和模块。这种方法导入的路径会在python程序退出后失效。1. 加入上层目录和绝对路径import syssys.path.append('..') #表示导入当前...原创 2018-03-13 21:26:20 · 61360 阅读 · 1 评论 -
Python 字符串相似性的几种度量方法
字符串的相似性比较应用场合很多,像拼写纠错、文本去重、上下文相似性等。评价字符串相似度最常见的办法就是:把一个字符串通过插入、删除或替换这样的编辑操作,变成另外一个字符串,所需要的最少编辑次数,这种就是编辑距离(edit distance)度量方法,也称为Levenshtein距离。海明距离是编辑距离的一种特殊情况,只计算等长情况下替换操作的编辑次数,只能应用于两个等长字符串间的距离度原创 2018-02-01 19:26:11 · 23431 阅读 · 0 评论 -
python中zip()函数基本用法
python中zip()函数基本用法zip()函数接受一系列可迭代对象作为参数,将不同对象中相对应的元素打包成一个元组(tuple),返回由这些元组组成的list列表,如果传入的参数的长度不等,则返回的list列表的长度和传入参数中最短对象的长度相同。举例1x = [1,2,3,4,5]y = ['a','b','c','d']xy = zip(x,y)print原创 2017-12-16 09:49:25 · 16101 阅读 · 5 评论 -
python pickle/cPickle模块
序列化(picking): 把变量从内存中变成可存储或传输的过程称为序列化,序列化之后,就可以把序列化的对象写入磁盘,或者传输给其他设备;反序列化(unpickling):相应的,把变量的内容从序列化的对象重新读到内存里的过程称为反序列化;python中有两个模块可以实现对象的序列化,pickle和cpickle,cpickle是用C语原创 2017-10-09 11:14:14 · 3951 阅读 · 0 评论 -
python中yield用法
yield在函数中的功能类似于return,不同的是yield每次返回结果之后函数并没有退出,而是每次遇到yield关键字后返回相应结果,并保留函数当前的运行状态,等待下一次的调用。如果一个函数需要多次循环执行一个动作,并且每次执行的结果都是需要的,这种场景很适合使用yield实现。原创 2017-09-28 20:54:41 · 26911 阅读 · 1 评论 -
Python里的一些注释规范
写代码注释是一件很重要的事情,如果你写的一段函数给别人调用那么往往都需要配上一些基本的注释。写好代码可以让别人容易阅读你的代码。试想一 下:如果你在github上面找到一段你想要的代码,这段代码有200行,可能这些代码我们要进行改造,那么这时候如果代码中都没有恰当的注释,我们可能要用比较久的时间去通读一下他的代码。相反,如果这些代码有一些恰当的注释,我们可能会更加好理解一点。学会注释是编码转载 2017-09-19 22:26:34 · 30602 阅读 · 0 评论 -
python中的异常处理try/except/finally/raise
异常发生在程序执行的过程中,如果python无法正常处理程序就会发生异常,导致整个程序终止执行,python中使用try/except语句可以捕获异常。try/except异常的种类有很多,在不确定可能发生的异常类型时可以使用Exception捕获所有异常:try:except Exception,e:print Exception,":",etry/excep原创 2017-09-19 09:23:17 · 7767 阅读 · 0 评论 -
Python之Split函数
python中的split()函数用来拆分一个字符串,通过指定的分隔符对字符串进行切割,返回切割后的字符串列表listsplit()函数用法:str.split(str=' ',num=string.count(str))参数str表示分隔符,默认为空格,但是不能为空(''),若字符串中没有查找到指定的分隔符,则把整个字符串作为列表的一个元素参数num表示分割次数,如果存在原创 2017-09-16 15:22:56 · 12985 阅读 · 0 评论 -
python中list用法及遍历删除元素
列表(list)是python的基本数据结构,list中每一个元素都分配一个位置索引,可以通过索引访问元素值,list不要求数据项有相同的数据类型。list初始化list由一个方括号加内部由逗号分割出的不同数据项组成,初始化:list1 = [1,2,3]list2 = ['a','b',1,2]list3 = []list4 = [0]*10 #分配10个值都为0的元素原创 2017-09-25 20:24:28 · 13247 阅读 · 0 评论 -
python中optparse模块用法
python中optparse模块用法optparse模块主要用来为脚本传递命令参数,采用预先定义好的选项来解析命令行参数。首先引入optparser模块,然后执行初始化,实例化一个OptionParser对象(可以带参,也可以不带参数),再为命令行添加选项,示例:from optparse import OptionParserusage="show something us原创 2017-09-20 21:12:05 · 15197 阅读 · 0 评论 -
Spyder调试快捷键
Ctrl+1: 注释、取消注释Ctrl+4/5: 块注释 / 取消块注释F12: 断点 / 取消断点F5: 运行Ctrl+F5: 启动调试Ctrl+F10: 单步调试,跳过函数内部实现Ctrl+F11: 单步调试,进入函数内部实现F9: 从当前光标所在行开始执行F8: 查看编译结果(包括Erro和W原创 2017-07-13 22:25:34 · 5159 阅读 · 2 评论 -
python类的继承和多态,获取对象信息
继承类的继承机制使得子类可以继承父类中定义的方法,拥有父类的财产,比如有一个Animal的类作为父类,它有一个eat方法:class Animal(object): def __init__(self): print("Animal 构造函数调用!") def eat(self): print("Anima原创 2017-07-13 22:18:27 · 1738 阅读 · 0 评论 -
python中format()方法格式化字符串
format()是python2.6新增的一个格式化字符串的方法,功能非常强大,有可能在未来完全替代%格式化方法,相比%,format()的优点有:1 .格式化时不用关心数据类型的问题,format()会自动转换,而在%方法中,%s用来格式化字符串类型,%d用来格式化整型;2. 单个参数可以多次输出,参数顺序可以不同3. 填充方式灵活,对齐方式强大1. 通过位置来填充字符串原创 2017-10-10 08:56:00 · 12542 阅读 · 1 评论 -
python enumerate函数用法
eunmerate在英文中是列举、枚举的意思,在python中eunmerate()是一个内置的函数,用于在一个可迭代或可遍历的对象(如列表、字符串、数组、字典)中,将对象组成一个一个序列和索引,可以同时获得索引和索引值。enumerate函数原型:enumerate(sequence, [start=0])功能:将可循环序列sequence以start开始分别列出序列数据和数原创 2017-10-01 21:37:49 · 3438 阅读 · 0 评论 -
python中通过xlwt、xlrd和xlutils操作xls
xlwt模块用于在内存中生成一个xls/xlsx对象,增加表格数据,并把内存中的xls对象保存为本地磁盘xls文件;xlrd模块用于把本地xls文件加载到内存中,可以读取xls文件的表格数据,查询xls文件的相关信息;xlwt可以生成xls文件,xlrd可以读取已经存在的xls文件,但是如果要修改本地已经存在的xls文件,就需要用到xlutils模块。xlutils模块是x原创 2017-10-26 20:13:35 · 4405 阅读 · 0 评论 -
python multiprocessing多进程应用
multiprocessing包是Python中的多进程管理包,可以利用multiprocessing.Process对象来创建进程,Process对象拥有is_alive()、join([timeout])、run()、start()、terminate()等方法。multprocessing模块的核心就是使管理进程像管理线程一样方便,每个进程有自己独立的GIL,所以不存在进程间争抢GIL的原创 2017-10-14 08:32:10 · 3721 阅读 · 0 评论 -
Python的GIL是什么鬼,多线程性能究竟如何
前言:博主在刚接触Python的时候时常听到GIL这个词,并且发现这个词经常和Python无法高效的实现多线程划上等号。本着不光要知其然,还要知其所以然的研究态度,博主搜集了各方面的资料,花了一周内几个小时的闲暇时间深入理解了下GIL,并归纳成此文,也希望读者能通过次本文更好且客观的理解GIL。文章欢迎转载,但转载时请保留本段文字,并置于文章的顶部 作者:卢钧轶(cenalulu) 本转载 2017-10-14 08:35:35 · 716 阅读 · 0 评论 -
python通配符之glob模块
通配符是一些特殊符号,主要有星号(*)和问号(?),用来模糊搜索文件,“*”可以匹配任意个数个符号, “?”可以匹配单个字符。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者需要匹配符合一定条件的多个目标文件时,可以使用通配符代替一个或多个真正的字符。英文 “globbing”意为统配,python在模块glob中定义了glob()函数,实现了对目录内容进行匹配原创 2017-10-22 13:12:55 · 28158 阅读 · 1 评论 -
python中元组tuple
python中列表(list)和元组(tuple)有很多相似的地方,它们都是容器,由一系列的对象构成,都可以包含任意类型的元素,甚至是一个序列。 list和tuple的不同首先体现在写法上: list由方括号引导: L = [ele1,ele2,ele3] tuple由圆括号引导: T = (ele1,ele2,ele3)字典由大括号引导: D = {key1:va原创 2017-10-10 21:09:48 · 1170 阅读 · 0 评论 -
python之切片操作
字符串、列表、元组(tuple)在python中都符合“序列”这一特征,符合“序列”特征的对象都可以使用切片(slice)去访问它们的任意部分,切片操作符在python中的原型是:[start:stop:step], 表示为[开始索引:结束索引:步长]开始索引:从0开始,序列从左向右累增计数,最一个值的索引记为-1;结束索引:切片操作到此为止,不包含该索引的值;步原创 2017-10-10 20:06:42 · 1002 阅读 · 1 评论