分类标签归档:python

Python中的字典和集合


Python标准库中的所有映射类型都是使用dict来实现的,因此他们都有一个共同的限制,即只有可散列的数据类型才可以作为映射的键,那么什么是可散列的数据类型呢?下面介绍下:
在python词汇表中,关于可散列类型的定义有这么一段话:

如果一个对象是可散列的,那么在这个对象的生命周期中,他的可散列值是不变的,而且这个对象需要实现hash()方法。另外可散列对象还要有__eq__()方法,这样才可以和别的键做比较,如果两个可散列对象的值是相等的,那么他们的散列值一定是相等的。

原子不可变数据类型(strbytes和数值类型)都是可散列类型,frozenset也是可散列的,因为根据其定义,fro

Read more

Python中的序列


内置序列类型概述:

Python标准库使用C实现了丰富的序列类型,列举如下:

  • 容器序列
    listtuplecollsctions.deque这些序列能存放不同的数据类型。
  • 扁平序列
    str,bytes,bytearray,memoryview和array.array,这些序列只能存放一种类型。

容器序列存放的是他们所包含的任意类型的对象引用,而扁平序列存放的是值而不是引用,也就是说,扁平序列其实是一段连续的内存空间,因此扁平序列其实更加紧凑,但是他们里面只能存放例如字符,字节和数值这种基础类型。
序列类型还可以按照是否可以修改赖分类。

  • 可变序列
    listbytearrayarra

Read more

使用树莓派和OpenCV 实现家庭监控和移动目标探测


本篇文章主要是分享使用opencv和树莓派实现的移动目标探测,所以需要有opencv环境,另外你的电脑必须有摄像头支持。 具体参考自伯乐在线的 这篇文章 具体内容大家可以参考下原文,我在其基础上大概修改了下,下面是代码:

import datetime
import time
import cv2
import logging
import imutils
import os

lastSaveTime = datetime.datetime.now()
motionCounter = 0
path = os.path.split(os.path.realpath(__file__))[0]

Read more

使用python和opencv实现简单的网络摄像头


这个网络摄像头需要一个客户端和服务端,客户端使用opencv捕捉摄像头,通过socket将图片流传输到服务端,服务端接受图片流,使用HTTPServer渲染生成一个简单的网页,将图片流用mjpeg的方式传输到浏览器中,这样就可以直接用浏览器来查看摄像头视频了。主要的实现方式就是这样的,下面详细介绍下.

安装依赖

首先需要在客户端安装opencv,安装方式可以Google下,这里就不再赘述了,服务端需要安装pillownumpy这两个模块。

实现代码

首先是客户端的代码:

import io
import socket
import struct
import time
import date

Read more

使用python连接hive


首先需要安装包:

pip install pyhive[hive]

如果安装报错的话执行:

sudo apt-get install libsasl2-dev

再安装下。

然后需要启动hive服务:

hive --service hiveserver2

修改hive验证方式: 在hive-site.xml中:

<property>
   <name>hive.server2.authentication</name>
   <value>NOSASL</value>
   <description>
     Exp

Read more

使用Hadoop的MapReduce和jieba分词统计西游记中的词频


这个功能主要是使用python的jieba分词模块来分词,然后使用mapreduce来统计,其实功能很简单,但是由于刚开始接触使用hadoop,出现了各种问题,这里记录下。
在hadoop执行的mapreduce程序时,使用python非系统模块的话会出现找不到包的错误,网上找到了一种解决方案,使用系统内置的zipimport模块,使用方法: 首先将该模块的所有文件复制到当前目录,然后执行:

zip -r jieba.zip jieba
mv jieba.zip jieba.mod

然后代码中就可以这样引入:

import sys

sys.path.append('./')

Read more