`

python几个包的使用

 
阅读更多

 一,pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别。用于将数据方便地从文件或网络存取。示例如下:

#!/usr/bin/python

import pickle

def save_data(file, data):
        pickle.dump(data, open(file, 'w'))

def load_data(file):
        return pickle.load(open(file, 'r'))

if __name__ == '__main__':

        data = {}
        data[0] = "apple"
        data["name"] = "ciaos"

        print data

        save_data("save.dat", data)
        loaddata = load_data("save.dat")

        print loaddata

 执行效果如下:

 

root # python test.py
{0: 'apple', 'name': 'ciaos'}
{0: 'apple', 'name': 'ciaos'}

 

二,ConfigParser解析的配置文件的格式比较象ini的配置文件格式,就是文件中由多个section构成,每个section下又有多个配置项

root # cat test.conf
[db]
db_host=127.0.0.1
db_port=3306
db_user=root
db_pass=password

[concurrent]
thread=10
processor=20

 

#test.py

#!/usr/bin/python

import ConfigParser
import string, os, sys

cf = ConfigParser.ConfigParser()
cf.read("test.conf")
# return section
s = cf.sections()
print 'section:', s

o = cf.options("db")
print 'options:', o

v = cf.items("db")
print 'db:', v

print '-'*60
db_host = cf.get("db", "db_host")
db_port = cf.getint("db", "db_port")
db_user = cf.get("db", "db_user")
db_pass = cf.get("db", "db_pass")

threads = cf.getint("concurrent", "thread")
processors = cf.getint("concurrent", "processor")

print "db_host:", db_host
print "db_port:", db_port
print "db_user:", db_user
print "db_pass:", db_pass

print "thread:", threads
print "processor:", processors
cf.set("db", "db_pass", "zhaowei")
cf.write(open("test.conf", "w"))

 执行效果如下:

root # python test.py
section: ['db', 'concurrent']
options: ['db_host', 'db_port', 'db_user', 'db_pass']
db: [('db_host', '127.0.0.1'), ('db_port', '3306'), ('db_user', 'root'), ('db_pass', 'password')]
------------------------------------------------------------
db_host: 127.0.0.1
db_port: 3306
db_user: root
db_pass: password
thread: 10
processor: 20

 三,python提供了一个日志模块logging,它可以把我们想要的信息全部保存到一个日志文件中,方面我们查看

import logging

def get_logger(log_name):
        logger = logging.getLogger()
        formatter = logging.Formatter('%(pathname)s - %(asctime)s - %(name)s - %(levelname)s - %(message)s',)
        file_handler = logging.FileHandler(log_name)
        file_handler.setFormatter(formatter)
        logger.addHandler(file_handler)
        logger.setLevel(logging.NOTSET)
        return logger

		
logger = get_logger("file.log")
		
logger.debug('debug')   
logger.info('info')   
logger.warning('warn')  
logger.error('error')
#
# root # cat test.log
# test.py - 2013-05-28 23:59:22,771 - root - ERROR - test one
# test.py - 2013-05-28 23:59:22,771 - root - ERROR - test two
#

  四,import pdb包用于代码调试,在需要设置断点的地方添加pdb.set_trace()

 参照http://blog.csdn.net/luckeryin/article/details/4477233

  五,python脚本中若包含中文字符,运行会出错,可以在源代码文件前面添加如下代码即可

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys

reload(sys)
sys.setdefaultencoding('utf8')

  六,post表单

import urllib
import urllib2

postdata = {"name":"test"}
f = urllib2.urlopen(
        url     = "http://127.0.0.1/post.php",
        data    = urllib.urlencode(postdata)
)
print f.read()

  七,利用urllib2实现文件下载

def downloader(filename, url):
        try:
                f = urllib2.urlopen(url,timeout=10800)
                with open(filename, "wb") as code:
                        code.write(f.read())
        except:
                logger.critical(sys.exc_info())
                logger.error("download error " + url)
                return 0

        logger.info("download ok " + url)
        return 1
#计算下载文件md5
def downloader(filename, url):
        try:
                m = hashlib.md5()  
                f = urllib2.urlopen(url,timeout=10800)
                m.update(f.read())   
                print m.hexdigest()
                time.sleep(2)
        except:
                print "error"
                return 0
 八,http(s)请求设置长连接
#coding=UTF-8
import httplib
import time
from time import clock
import ssl

def url_open(conn_obj):
    """httplib长连接"""

    uri="/test.file"
    try:
        conn_obj.request("GET", uri, "", {"Connection":"keep-alive"})
        #conn_obj.request("POST", "/func","param=0", {"Connection":"Keep-Alive"})
        response = conn_obj.getresponse()
        return response.read()
    except:
        return "error"

if __name__ == "__main__":
    start = time.time()
    #http request
    #conn = httplib.HTTPConnection("localhost:80")

    #https request
    conn = httplib.HTTPSConnection("localhost:443")
    for i in range(100):
        ret = url_open(conn)
    conn.close()
    end = time.time()
    print (end-start)
九,twisted
#!/usr/bin/python

from sys import argv
from pprint import pformat

#from twisted.internet.task import react
from twisted.internet import reactor
from twisted.web.client import Agent, readBody
from twisted.web.http_headers import Headers

total_times = 1000
times = 0

def cbRequest(response):
    print 'Response version:', response.version
    print 'Response code:', response.code
    print 'Response phrase:', response.phrase
    print 'Response headers:'
    print pformat(list(response.headers.getAllRawHeaders()))
    d = readBody(response)
    d.addCallback(cbBody)
    return d

def cbBody(body):
    #print 'Response body:'
    print body

def cbShutdown(ignored):
    global times
    times = times + 1
    if total_times - 1 < times:
    	reactor.stop()

def curl(url):
    agent = Agent(reactor)
    d = agent.request(
        'GET', url,
        Headers({'User-Agent': ['Twisted Web Client Example']}),
        None)
    d.addCallback(cbRequest)
    d.addBoth(cbShutdown)
    return d

if __name__ == '__main__':

    for i in range(total_times):
    	curl("http://web.kuaipan.cn/static/images/pc.png")
    
    reactor.run()
 
分享到:
评论

相关推荐

    python2.7.10几个常用模块

    本压缩包包含的是Python 2.7.10的安装程序以及几个常用的Python模块,这些模块使得安装过程变得更加简便。下面我们将详细探讨Python 2.7.10中的几个关键模块及其功能。 1. **标准库模块**: - **os**: 这个模块...

    python2.7依赖包.zip

    然后,使用`python setup.py install`命令安装每个包。如果没有`setup.py`文件,可能需要手动复制文件到正确的位置。 4. **环境变量**:确保`PYTHONPATH`环境变量已更新,包括了新安装的依赖包的路径,以便Python...

    Python 几个小程序打包下载

    于初学者有用 几个很简单的Python程序 大神就别看了呼呼

    python汉化包

    安装过程通常非常简单,通常包括以下几个步骤: 1. 下载汉化包:首先需要从可信赖的源下载"pycharm2017中文包"。确保文件来源安全,以避免潜在的恶意软件风险。 2. 解压文件:将下载的压缩包使用解压缩工具进行...

    Python-python库自助下载whl包

    要自助下载Python的whl包,首先我们需要了解几个关键概念: 1. **Python版本**:Python有多个版本,如2.7、3.6、3.8等,且每个版本都有自己的 ABI(Application Binary Interface)。因此,whl包需要与目标Python...

    python3依赖包.zip

    Python3 的依赖包主要通过 pip 这个包管理器来安装。pip 可以帮助我们查找、安装、升级和卸载Python库。在“python3依赖包.zip”中,包含了这些库的源码或者预编译的二进制文件,解压后,我们可以利用pip的离线模式...

    基于openwrt下安装python ipk包

    在提供的文件列表中,可以看到几个不同的Python IPK包,包括: 1. `python_2.7.3-2_ramips_24kec.ipk`:这是完整的Python解释器,版本为2.7.3。 2. `python-mini_2.7.3-2_ramips_24kec.ipk`:这是一个精简版的...

    python学习资料几套教程打包下载,比较好的资料和源码

    这份"python学习资料几套教程打包下载,比较好的资料和源码"包含了一系列资源,旨在帮助初学者和进阶者提升Python技能。 首先,我们要明白Python的基础知识。Python的语法结构清晰,强调代码可读性,它支持多种编程...

    Python-Python弹幕包Alivedanmupackageforpython

    在Python开发中,处理多媒体数据时,通常需要了解以下几个知识点: 1. **网络编程**:使用Python的socket或http库(如requests和urllib)进行网络通信,获取和发送弹幕数据。 2. **WebSocket协议**:弹幕服务通常...

    CentOS 7 离线安装 Python 3 需要的 rpm 包

    这些文件可能包括了如下的几个部分: 1. **Python 3 主体**:比如 `python3.x.x.rpm`,这包含了 Python 3 的核心执行环境。 2. **Python 3 开发库**:如 `python3-devel.x.x.rpm`,对于需要编译 Python 模块或进行 ...

    python新手算法函数思想入门项目,包含几个小项目,没有程序基础可以根据这个开拓思维,会发现算法也挺好玩的,标有注解,一看就懂

    本入门项目包含几个小项目,旨在让新手逐步熟悉Python中的算法和函数。每个项目都带有注解,这有助于理解代码背后的逻辑。注解通常以`#`开始,它不会被Python解释器执行,但能为阅读代码的人提供信息。通过这些注解...

    python36资源包

    这个包特别强调了几个关键的库,包括IPython、Pandas、NumPy和Matplotlib,以及Web开发框架Django。下面将详细阐述这些库的功能和重要性。 1. **Python**: Python是一种高级编程语言,以其简洁、易读的语法和强大的...

    HCNetSDK(python)_pythonplayctrl_海康威视python_海康威视python版sdk_hikvis

    标题“HCNetSDK(python)_pythonplayctrl_海康威视python_海康威视python版sdk_hikvisionSDK”中提到了几个关键点: 1. **HCNetSDK**: 这是海康威视提供的SDK的核心部分,它包含了一系列的库和工具,使开发者能够...

    使用python来简单实现jdk几个指令.zip

    这个压缩包文件"使用python来简单实现jdk几个指令.zip"提供了一种使用Python来实现Java JDK中几个基础命令的方法,例如`jps`和`jstat`。下面将详细解释这些知识点。 1. **Java Development Kit (JDK)**: JDK是Java...

    python-pptx安装包及其依赖包

    这个安装包包含了几个关键的组件,让我们逐一探讨它们。 1. **lxml**: "lxml"是Python中一个强大的XML和HTML处理库,它基于libxml2和libxslt这两个高效的C库。lxml提供了一个高效的API,用于解析、创建、修改和...

    Python几个入门知识案例

    适合初学python时使用,内包含几个python入门知识的案例仅供参考。 相关的Python基础知识:变量及类型、标识符与关键字、常用格式化输出符号、运算符、算数运算符、赋值运算符、while、if、for等等。

    【用python制作表情包教程】Python制作表情包实现换脸功能+附PDF资料

    【用python制作表情包教程】Python制作表情包实现换脸功能+附PDF资料 使用Python制作表情包实现换脸功能 ...一言不合就斗图,自己也会在聊天中发几个表情包,可是总会造成一些小误会,比如下面的图

    centos 重新安装Python的rpm包:python.zip

    首先,重新安装Python的RPM包通常涉及到以下几个步骤: 1. **卸载现有版本**: 在重新安装之前,我们需要确保当前系统上的Python版本已经被安全地移除。可以使用`yum remove`或`rpm -e`命令来卸载Python。例如: ...

    RabbitMQ 3.7安装及Python使用

    在Python中使用RabbitMQ主要涉及几个方面:首先需要安装RabbitMQ的Python客户端库(例如pika),然后在Python代码中导入库并创建与RabbitMQ服务器的连接。连接建立后,可以创建消息通道,定义消息的发布和订阅,从而...

    Python项目打包例子.zip

    一个基本的Python项目通常包括以下几个部分: 1. `setup.py`:这是项目打包的核心文件,用于定义项目信息和构建指令。 2. `setup.cfg`(可选):这是一个配置文件,可以用来替代`setup.py`中的部分设置,使项目配置...

Global site tag (gtag.js) - Google Analytics