
python
文章平均质量分 86
chenyulancn
python、golang、c/c++、linux、虚拟化、大数据
展开
-
Python3 操作 elasticsearch
elasticsearch 模块Elasticsearch低级客户端。提供从Python到ES REST端点的直接映射。连接集群节点指定连接es = Elasticsearch( ['172.16.153.129:9200'], # 认证信息 # http_auth=('elastic', 'changeme'))动态连接es = Elastic...转载 2020-01-19 15:45:42 · 879 阅读 · 0 评论 -
Python中文问题 或 SyntaxError: Non-ASCII character '\xe8' in file
python的中文问题一直是困扰新手的头疼问题。如果在运行时出现SyntaxError: Non-ASCII character '\xe8' in file 是因为源文件中有中文出现:Python 默认的是ASCII 编码方式,如果出现中文会出现问题,所哟必须在代码的第二行或第一行 显示的声明编码方式(已注释的方式,即"#"开始): 使用utf-8编码方式即可解决,即把置换为 u翻译 2012-09-04 13:01:30 · 23816 阅读 · 0 评论 -
python调用 C/C++ 代码示例
Python开发效率高,运行效率低。而c/c++恰恰相反。因此在python脚本中调用c/c++的库,对python进行扩展,是很有必要的。使用python api,http://www.python.org/doc/,需要安装python-dev。test.cpp文件如下[cpp] #include //包含python的头文件 // 1 c/cpp中的函数转载 2012-09-04 14:46:18 · 918 阅读 · 0 评论 -
Python调用C/C++的种种方法
Python是解释性语言, 底层就是用c实现的, 所以用python调用C是很容易的, 下面就总结一下各种调用的方法, 给出例子, 所有例子都在ubuntu9.10, python2.6下试过.1. Python 调用 C (base) 想在python中调用c函数, 如这儿的fact#include int fact(int n){ if (n retu转载 2012-09-04 15:24:53 · 768 阅读 · 0 评论 -
字符串(string)转为字典(dict)
如何将一个字符串(string)转为字典(dict)呢?其实也很简单,只要用 eval()或exec() 函数就可以实现了。>>> a = "{'a': 'hi', 'b': 'there'}">>> b = eval(a)>>> b{'a': 'hi', 'b': 'there'}>>> exec ("c=" + a)>>> c{'a': 'hi', 'b': 'ther转载 2012-09-06 08:50:17 · 3864 阅读 · 0 评论 -
字典(dict)转为字符串(string)
将字典(dict)类型转为字符串(string)类型。通过遍历dict中的所有元素就可以实现字典到字符串的转换:for key, value in sample_dic.items(): print "\"%s\":\"%s\"" % (key, value)转载 2012-09-06 08:55:33 · 8301 阅读 · 0 评论 -
Python字典与集合操作总结
一.创建字典 方法①: >>> dict1 = {} >>> dict2 = {'name': 'earth', 'port': 80} >>> dict1, dict2 ({}, {'port': 80, 'name': 'earth'}) 方法②:从Python 2.2 版本起 >>> fdict转载 2012-09-06 08:45:48 · 779 阅读 · 0 评论 -
Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结
创建列表sample_list = ['a',1,('a','b')]Python 列表操作sample_list = ['a','b',0,1,3]得到列表中的某一个值value_start = sample_list[0]end_value = sample_list[-1]删除列表的第一个值del sample_list[0]在列表中插入一个值sample_lis转载 2012-09-06 08:46:59 · 687 阅读 · 0 评论 -
Python:使用ctypes库调用外部DLL
前言朋友的公司是做GPS的,上周联系到我要帮做个程序把他们平台的车辆定位跟踪数据和省里的平台对接。看一下官方提供的三个文档,洋洋洒洒共一百多页,一大堆协议的定义甚是齐全,好在官方的文件中也带有个封装好通信功能的DLL和一个调用此接口的c++ DEMO程序,既然有现成的可用,那就不必去看他的协议了。说实话,参加工作之后就基本没用过c++,生疏了。特别是要用c++操作数据库,对我来说比割几刀还转载 2012-09-27 08:23:04 · 1119 阅读 · 0 评论 -
Python Singleton(单例模式)实现
1. 重载__new__方法1class Singleton(object):2 def__new__(cls,*args, **kwargs):3 ''' A pythonic singleton '''4转载 2012-09-10 14:31:40 · 512 阅读 · 0 评论 -
cython安装、使用
一、cython 在linux(ubuntu)下安装sudo apt-get install cython安装后 输入 cython 即可验证是否安装成功二、 使用 1、编写 以 .pyx为扩展名的 cython程序,hello.pyxdef say_hello_to(name): print("Hello %s!" % name) 2原创 2012-09-27 17:25:11 · 36438 阅读 · 0 评论 -
解决 Python.h:没有那个文件或目录 错误的方法( Python.h:No such file or directory )
出现No such file or directory的错误,有两种情况,一种是没有Python.h这个文件,一种是Python的版本不对,可以进入/usr/include/文件夹下的Pythonx.x文件夹里查找是否有Python.h这个文件。如果是第一种情况,那么需要安装Python-dev这个包,(sudo apt-get install python-dev)转载 2012-09-27 17:32:40 · 15246 阅读 · 2 评论 -
python学习笔记 - @property
@property 可以将python定义的函数“当做”属性访问,从而提供更加友好访问方式,但是有时候setter/getter也是需要的,我们视具体情况吧请注意以下代码场景:代码片段1:Python2.6代码 class Parrot(object): def __init__(self): self._voltage = 1转载 2012-09-11 16:24:18 · 404 阅读 · 0 评论 -
python 进行linux 用户验证
用python 程序进行linux 用户验证,需要具备两个人条件:1、获取待验证用户相应密码加密用的 salt(salt可理解为加密密钥) salt在 /etc/shadow 文件中(详情请参见),以用户zero为例:zero:$6$F3MzHURV$1GcuHKgSDiZzfjAgozFqRImfbu7xEjRSj28YOa5vf.V9hwVHaNfiotL/i9lmzEd4huJ原创 2012-09-28 12:30:30 · 2820 阅读 · 0 评论 -
python程序 添加具有root权限的 linux 用户
#! /usr/bin/env python# This Python file uses the following encoding: utf-8''''Created on 2012-9-28@author: zero'''import os,crypt,sysif len(sys.argv)<3: print("usage: python %s test11 test转载 2012-09-28 10:53:40 · 3444 阅读 · 0 评论 -
在C/python中执行linux命令并得到返回值以及输出
一般来说,用shell的方便之处在于,能够直接调用linux系统命令,方便的得到结果。但是shell scprit的约束重重(这里不再讲了)。下面说一下在C和python中如何调用linux命令、得到返回值并得到输出1. python,使用os库/commands库方法1)使用commands.getstatusoutput方法,这是一个神奇的方法,能够直接得到返回值以及命令输出。官网转载 2012-09-29 14:27:28 · 9375 阅读 · 0 评论 -
Python模块学习 ---- re 正则表达式
正则表达式中特殊的符号:"." 表任意字符"^ " 表string起始"$" 表string 结束“*” “+” “?” 跟在字符后面表示,0个——多个, 1个——多个, 0个或者1个*?, +?, ?? 符合条件的情况下,匹配的尽可能少//限制*,+,?匹配的贪婪性{m} 匹配此前的字符,重复m次{m,n} m到n次,m,n可以省略举个例子 ‘a.*b’ 表转载 2012-09-12 16:47:49 · 552 阅读 · 0 评论 -
注册并发布一个xmlrpc远程对象(函数、类对象、客户端使用调用(对象.方法)格式)
前言:SimpleXMLRPCServer顾名思义就是实现XML-RPC的远程调用服务器服务器端:from SimpleXMLRPCServer import SimpleXMLRPCServer #服务器端import loggingimport os logging.basicConfig(level=logging.DEBUG) #记录日志级别为DEBUG ser转载 2012-09-14 11:24:54 · 1535 阅读 · 0 评论 -
使用 2to3 工具 转换python代码
如果要把python2编译器下的代码转换升级到python3编译器,可以使用python自带的 2to3工具进行转化:windows下转化:doc 命令窗口:>> python C:\Python32\Tools\Scripts\2to3.py -w dest.py ( -w 参数 不要忘记写)linux下转化:terminal原创 2012-09-13 16:44:38 · 7529 阅读 · 4 评论 -
多线程 xmlrpc 服务器(python)
传统版本:需要说明的是,这个并非很多资料描述的非单线程,而是一个select版本,所以某些时候比线程版本性能好from SocketServer import ThreadingMixInfrom SimpleXMLRPCServer import SimpleXMLRPCServer, SimpleXMLRPCRequestHandlerfrom SocketServer impo转载 2012-09-14 17:29:56 · 2773 阅读 · 0 评论 -
Python多进程并发(multiprocessing)
原文由于Python设计的限制(我说的是咱们常用的CPython)。最多只能用满1个CPU核心。Python提供了非常好用的多进程包multiprocessing,你只需要定义一个函数,Python会替你完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。1、新建单一进程如果我们新建少量进程,可以如下:01import multi转载 2012-09-14 17:34:54 · 1284 阅读 · 1 评论 -
linux系统下 python获取 内存、cpu、负载、网络流量、硬盘等信息
内存信息 / meminfo 返回dict#!/usr/bin/env pythondef memory_stat(): mem = {} f = open("/proc/meminfo") lines = f.readlines() f.close() for line in lines: if len(line) < 2: co转载 2012-09-19 12:45:23 · 10093 阅读 · 0 评论 -
用python ctypes调用动态链接库
ctypes is very cool! Great piece of work. - Just van Rossumctypes使得python能够直接调用c语言开发的动态链接库,非常强大。为了使用CTypes,你必须依次完成以下步骤: * 编写动态连接库程序 * 载入动态连接库 * 将Python的对象转换为ctypes所能识别的参转载 2012-09-19 15:43:06 · 1357 阅读 · 0 评论 -
系统级(system-wide)跨平台文件锁
不同于 msvcrt 和 fcntl 锁的实现,该锁是夸平台的 原子操作的文件锁。FileLock类原码:import osimport timeimport errno class FileLockException(Exception): pass class FileLock(object): """ A file locking mechanis翻译 2012-10-11 11:53:35 · 1312 阅读 · 0 评论 -
使用Python同步文件夹
同步文件夹的工具有很多,下面是我用 Python 写的一个小脚本,兼容 Windows 和 Linux,算是重复发明轮子,不过也当是练习,呵呵。用法很简单,如下: python syncdir.py source_dir target_dir 作用是将文件夹 source_dir 中的文件同步到文件夹 target_dir 中,同步的过程遵循以下规则: 1、如果文件 f1 在 s转载 2012-09-20 14:51:16 · 2459 阅读 · 1 评论 -
python的线程锁机制
线程与锁请求锁定 -- 进入锁定池等待 -- 获取锁 --- 已锁定 ---释放锁锁Lock() Lock(指令锁)是可用的最低级的同步指令。Lock处于锁定状态时,不被特定的线程拥有。Lock包含两种状态——锁定和非锁定,以及两个基本的方法。可以认为Lock有一个锁定池,当线程请求锁定时,将线程至于池中,直到获得锁定后出池。池中的线程处于状态图中的转载 2012-09-20 15:29:45 · 1226 阅读 · 0 评论 -
文件控制(所锁)
python因为在windows 和 linux 版本头所区别所使用的文件锁也有所区别,下面简单介绍下:windows平台下使用的 :msvcrt详情请参见http://docs.python.org/library/msvcrt.html#module-msvcrtunix平台下使用 :fctrl详情参见http://docs.python.org/lib原创 2012-10-11 11:46:55 · 614 阅读 · 0 评论 -
python写的文件同步服务器
服务端使用asyncore, 收到文件后保存到本地。客户端使用pyinotify监视目录的变化 ,把变动的文件发送到服务端。重点:1. 使用structs打包发送文件的信息,服务端收到后,根据文件信息来接收客户端传送过来的文件。2. 客户端使用多线程,pyinotify监视到文件变化,放到队列中,由另外一个线程发送。服务端:########################转载 2012-09-20 15:13:25 · 1106 阅读 · 0 评论 -
C Extending or ctypes in pyinotify
准备要重构以前的 mirrord 项目,即利用 inotify 做小文件同步,当时的经验还是不够,结构设计上还是太臃肿,用了好几个线程,可靠性也不高。另外,调用了 pyinotify,这个模块的胶合层对于我的需求来说还是太厚,许多功能其实是不需要的,而且,它的 wd(watch id) 和 watch instance(包含 pathname) 之间的映射实际上是内存中的一个 dict,当文件数量转载 2012-09-20 15:19:50 · 868 阅读 · 0 评论 -
python 文件同步
传统的文件同步方案有rsync(单向) 和 unison(双向)等,它们需要扫描所有文件后进行比对,差量传输。如果文件数量达到了百万甚至千万量级,扫描所有文件将非常耗时。而且正在发生变化的往往是其中很少的一部分,这是非常低效的方式。之前看了Amazon的Dynamo的设计文档,它们每个节点的数据是通过Hash Tree来实现同步,既有通过日志来同步的软实时特点(msyql, bdb等),也转载 2012-09-20 15:07:32 · 1554 阅读 · 0 评论 -
python 文件锁总结
通过对文件加锁来实现应用级别的锁机制是session处理中很重要的一环。当然并不是所有的session模块都使用这种方式,而且在涉及到集群时还是存在问题。不过在通常情况下的确够用了。那么在beaker中有文件加锁的功能,但是在windows下它是不支持的。于是我在网上搜了一下,发现了一些结果。http://pypi.python.org/pypi/lockfile 这是一个跨平台的锁机制。不过转载 2012-10-11 12:32:53 · 3073 阅读 · 0 评论 -
python的文件锁
python中文件操作往往会涉及到多个进程向同一个文件write的情况,这时要想保证同时只有一个进程写文件,可以采用如下方法:使用fcntl.flock.锁类型(fcntl.flock函数的第二个参数)LOCK_SH:表示要创建一个共享锁,在任意时间内,一个文件的共享锁可以被多个进程拥有LOCK_EX:表示创建一个排他锁,在任意时间内,一个文件的排他锁只能被一个进程拥有 L转载 2012-09-21 14:33:04 · 8938 阅读 · 3 评论 -
Python multiprocessing库使用手记(引子)
前段时间在做的一个Python项目,需要实现一个后台服务程序,程序流程比较复杂,而且可能经常变动,但是如果把整个流程切分成一些步骤,每个步骤有自己的输入输出和处理。只要将他们的输入输出接在一起,进行不同的组合就可以实现常见的流程变动。使用多进程的原因是考虑到Python的全局解释器锁(Global Interceptor Lock, GIL)。由于GIL的存在,在CPU密集型的程序当中,使用多转载 2012-09-24 15:19:21 · 754 阅读 · 0 评论 -
Python multiprocessing 使用手记[1] – 进程模型
首先从multiprocessing的进程模型开始看。multiprocessing的目的是创建一个接口和python.threading类似接口的库,用多进程的方式来并发处理。因此创建一个新的进程的的方法也和python.threading很像:import multiprocessing def dosomething(a,b,c): pass p = multiprocess转载 2012-09-24 15:22:57 · 716 阅读 · 0 评论 -
Python多进程并发(multiprocessing)
由于Python设计的限制(我说的是咱们常用的CPython)。最多只能用满1个CPU核心。Python提供了非常好用的多进程包multiprocessing,你只需要定义一个函数,Python会替你完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。1、新建单一进程如果我们新建少量进程,可以如下:import multiprocessingimport time转载 2012-09-24 16:01:13 · 1168 阅读 · 0 评论 -
Python multiprocessing 使用手记[2] – 跨进程对象共享
继续写关于Python multiprocessing的使用手记,继上次的进程模型之后,这次展开讨论一下multiprocessing当中的跨进程对象共享的问题。在mp库当中,跨进程对象共享有三种方式,第一种仅适用于原生机器类型,即python.ctypes当中的类型,这种在mp库的文档当中称为shared memory方式,即通过共享内存共享对象;另外一种称之为server process,转载 2012-09-24 15:54:39 · 4250 阅读 · 0 评论 -
Python multiprocessing 使用手记[3] – 关于Queue
继续讨论Python multiprocessing,这次讨论的主要内容是mp库的核心组件之一的Queue。Queue是mp库当中用来提供多进程对象交换的方式。对象交换和上一部分当中提到的对象共享都是使多个进程访问同一个对象的方式,两者的区别就是,对象共享是多个进程访问同一个对象,对象交换则是将对象从一个进程传输的另一个进程。multiprocessing当中的Queue使用方式和Pyth转载 2012-09-24 15:58:41 · 1346 阅读 · 0 评论 -
Python.h: No such file or directory
在python调用c代码时,需要用到python.h文件,但这个文件没有在python编译器的默认安装包中,所以需要单独安装。在ubuntu下:sudo apt-get install python-dev原创 2012-11-06 09:00:47 · 674 阅读 · 0 评论 -
Python程序和C程序的整合
概览 Python是一种用于快速开发软件的编程语言,它的语法比较简单,易于掌握,但存在执行速度慢的问题,并且在处理某些问题时存在不足,如对计算机硬件系统的访问,对媒体文件的访问等。而作为软件开发的传统编程语言—— C 语言,却能在这些问题上很好地弥补 Python 语言的不足。因此,本文通过实例研究如何在 Python 程序中整合既有的 C 语言模块,包括用 C 语言编写的源程序和动转载 2012-11-06 14:13:11 · 629 阅读 · 0 评论 -
python调用pam模块进行linux用户验证
# (c) 2007 Chris AtLee # Licensed under the MIT license:# http://www.opensource.org/licenses/mit-license.php"""PAM module for pythonProvides an authenticate function that will allow the caller t转载 2012-11-06 14:41:23 · 3585 阅读 · 0 评论