码迷,mamicode.com
首页 > 编程语言 > 详细

python基础---->python的使用(七)

时间:2017-12-12 12:24:14      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:pytho   友情链接   itext   span   二进制   linux   strip()   arp   pos   

  这里记录python关于io、装饰器和序列化的一些知识。面对大河我无限惭愧,我年华虚度,空有一身疲倦,和所有以梦为马的诗人一样,岁月易逝 一滴不剩。

 

python的一些知识

一、python中的装饰器的使用

在调用now函数之前先打印一句话,@log放在函数的定义上面。

def log(func):
    def wrapper(*args, **kwargs):
        print(call %s(): % func.__name__)
        return func(*args, **kwargs)
    return wrapper

@log
def now():
    print(2017-12-12)

now()
print(now.__name__)

运行的结果如下:

call now():
2017-12-12
wrapper

如果是需要在装饰器中传递参数,需要在外面多嵌套一层。

def log(text):
    def decorator(func):
        def warpper(*args, **kwargs):
            print(%s %s(): % (text, func.__name__))
            return func(*args, **kwargs)
        return warpper
    return decorator

@log(hello world)
def now():
    print(2017-12-12)

now()
print(now.__name__) 

运行的结果如下:

hello world now():
2017-12-12
warpper

上面的两种now.__name__改成了warpper,一个完整的例子如下:

import functools

def log(func):
    @functools.wraps(func)
    def wrapper(*args, **kw):
        print(call %s(): % func.__name__)
        return func(*args, **kw)
    return wrapper

import functools是导入functools模块。模块的概念稍候讲解。现在,只需记住在定义wrapper()的前面加上@functools.wraps(func)即可。

 

二、python中偏函数的使用

# 偏函数的使用
print(int(12345, base=8))
print(int(12345, base=16))

# 这里面我们定义一个二进制的函数
def int2(x, base=2):
    return int(x, base)
print(int2(100101010)) #  298

# 采用偏函数的话,可以直接固定一个函数的参数
import functools
int2 = functools.partial(int, base=2)
print(int2(101001010)) # 330

 

三、StringIO和BytesIO的使用

from io import StringIO

f = StringIO()
f.write(hello)
f.write( world)
print(f.getvalue())  # hello world

# 读取StringIo的数据
f = StringIO(Hello!\nHi!\nGoodbye)
while True:
    s = f.readline()
    if s == ‘‘:
        break
    print(s.strip())

# StringIO只能操作str,如果是二进制的数据,就要用到bytesIO
from io import BytesIO

f = BytesIO()
f.write(中文.encode(utf-8))
print(f.getvalue())

运行的结果如下:

hello world
Hello!
Hi!
Goodbye
b\xe4\xb8\xad\xe6\x96\x87

 

四、python中模块os操作目录和文件

# 系统的名称
import os
print(os.name)

# 环境变量
print(os.environ)
print(os.environ.get(JAVA_HOME))

# 文件和目录的操作
print(os.path.abspath(.)) # G:\Java\Go\program\2017-05-18\LearnPython1\test10\io
print(os.path.join(C:/Users/michael, testdir))
os.mkdir(os.path.join(C:/Users/michael, /testdir))

# 得到文件的目录和文件名称
directory, filename = os.path.split(/Users/michael/testdir/file.txt)
print(directory)
print(filename)

# 得到文件的后缀
print(os.path.splitext(/path/to/file.txt)[1]) # .txt

# 修改文件名和删除文件
os.rename(test.txt, test.py)
os.remove(test.py)

# 文件的复制
import shutil
shutil.copyfile(/user/huhx.txt, /user/linux.txt)

 

五、python中的序列化

import pickle

d = dict(name=huhx, age=20, score=80)
print(pickle.dumps(d))  # b‘\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00huhxq\x02X\x03\x00\x00\x00ageq\x03K\x14X\x05\x00\x00\x00scoreq\x04KPu.‘

# 序列化
f = open(dump.txt, wb)
pickle.dump(d, f)
f.close()

# 反序列化
f = open(dump.txt, rb)
d = pickle.load(f)
f.close()
print(d) # {‘name‘: ‘huhx‘, ‘age‘: 20, ‘score‘: 80}

import json

print(json.dumps(d)) # {"name": "huhx", "age": 20, "score": 80}

json_str = {"age": 20, "score": 88, "name": "Bob"}
print(json.loads(json_str))  # {‘age‘: 20, ‘score‘: 88, ‘name‘: ‘Bob‘}

 

友情链接

 

python基础---->python的使用(七)

标签:pytho   友情链接   itext   span   二进制   linux   strip()   arp   pos   

原文地址:http://www.cnblogs.com/huhx/p/baseuselearnpython7.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!