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

python第五课

时间:2015-12-03 02:19:12      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:python 模块

翻译三层装饰器

 def Before(request,kargs):

    print ‘before‘

 def After(request,kargs):

    print ‘after‘

 def Filter(before_func,after_func):

    def outer(main_func):

        def wrapper(request,kargs):

            before_result = before_func(request,kargs)

            if(before_result != None):

                return before_result;

            main_result = main_func(request,kargs)

            if(main_result != None):

                return main_result;

             after_result = after_func(request,kargs)

            if(after_result != None):

                return after_result;

        return wrapper

    return outer

      

@Filter(Before, After)

def Index(request,kargs):

    print ‘index‘

 

1.   def Before(request,kargs)

2.   def After(request,kargs)

3.   def Filter(before_func,after_func)

4.   @Filter(Before, After)

a.  fileter(befor,after) return outer

b.  @outer(main_func) return wrapper

c.  index(request,kargs) -à wrapper(request,kargs)

 

 

递归

         函数自已调用自己

         def fun(i):

                  i = i+1

                  fun(i)

         fun(0)      

         如果需要返回值,那么,需要 return fun(i)如果不加return,那么返回值为none

         def fun(i):

                  i +=1

                  if i < 100:return fun(i)

                  else: return i

        

         n = fun(0)                 

         print n

 

模块

         实现某种功能的所有代码的集合

         内置模块 开源模块  自定义模块

导入 import module

                    from module.xx import xx

                    from module.xx import xx as newname

                    from module.xx import *

导入一个包,解释器解释该包下的__init__.py文件  (文件夹)

查找模块的路径 sys.path,返回值为列表,使用sys.path.append(‘路径’)可以添加路径,但是是临时的

内置模块

os.getcmd()   获取当前工作目录

os.chdir(‘’)  改变当前工作目录

os.curdir返回当前目录 (‘.’)

os.pardir返回当前目录的父目录字符串名 (‘..’)

os.makedirs(‘dirname1/dirname2’)  可生成多层递归目录

os.removedirs(‘dirname1’)    若目录为空,则删除并返回上层目录,如若也为空,则删除,依此类推

os.mkdir(‘dirname’)        生成单级空目录

os.rmdir(‘dirname’)           删除单级空目录

os.listdir(‘dirname’)                 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

os.remove()    删除一个文件

os.rename(‘oldname’,’newname’) 重命名文件/目录       

os.stat(‘path/filename’)          获取文件目录信处

os.sep      输出操作系统特定的路径分隔符 win ‘\\’  linux ‘/’

os.lineseq        输出当前平台使用的行终止符 win  ‘\r\n’  linux ‘\n’

os.pathseq      输出用于分割文件路径的字符串

os.name   输出字符串指示当前使用平台 win à’nt’  linuxà’posix’

os.system(‘bash command’)执行shell命令

os.environ       获取系统环境变量

os.path.abspath(path)         返回path规范化的绝对路径

os.path.split(path)  将path分割成目录和文件名二元组返回

os.path.dirname(path)  返回path的目录,其实就是os.path.split(path)的第一个元素

os.pah.basename(path)  返回path最后的文件名,是os.path.split(path)的第二个元素os.path.exists(path) 判断path 是否存在

os.path.istabs(path)  判断path是否为绝对路径

os.path.isfile(path) 判断path是否为一个存在的文件

os.path.isdir(path)  判断path是否为一个存在的目录

os.path.join(path1[,path2..]) 将多个路径组合后返回

os.path.getatime(path) 返回path所指向的文件或目录的最后存取时间

os.path.getmtime(path) 返回path所指向的文件或目录的最后修改时间

文件的 Access timeatime 是在读取文件或者执行文件时更改的;
          
文件的 Modified timemtime 是在写入文件时随文件内容的更改而更改的;
            
文件的 Create timectime 是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改的。

           ls -lc filename         列出文件的 ctime 
           ls -lu filename         
列出文件的 atime 
           ls -l filename          
列出文件的 mtime  

  • hashlib

import hashlib

hash = hashlib.md5() #hash.sha1()  hash.sha256()  hash.sha384()

hash.updat(‘admin’)

print hash.hexdigest()

等效

hashlib.md5(‘admin’).hexdigest()

对加密算法中添加自定义key再来做加密

hash=hashlib.md5(‘abc’)

hash.update(‘admin’)

print hash.hexdigest()

等郊

hashlib.md5(‘abc’+’admin’).hexdigest()

  • configparse

[section1]

k1 = v1

k2 = v2

[section2]

       k1 = v1

#!/usr/bin/env python

#-*- coding:utf-8 -*-

import ConfigParser

config = ConfigParser.ConfigParser()

config.read(‘i.cfg‘)

secs = config.sections()

print secs

options = config.options(‘section2‘)

print options

item_list = config.items(‘section1‘)

print item_list

val = config.get(‘section1‘,‘k1‘)

print val

#sec = config.add_section(‘han‘)

#config.write(open(‘i.cfg‘,‘w‘))

options = config.options(‘han‘)

print options

#config.remove_section(‘han‘)

#config.write(open(‘i.cfg‘,‘w‘))

config.set(‘han‘,‘age‘,38)

config.set(‘han‘,‘name‘,‘hanyanling‘)

config.set(‘han‘,‘gentle‘,‘male‘)

       config.write(open(‘i.cfg‘,‘w‘))

         config.remove_option(‘han’,’age’)

         config.write(open(‘i.cfg’,’w’))

  • random

random.random()   返回0到1之间的一个随机数

random.randint(a,b)  返回a和b之间的一个数,包括a和b

random.randrange ([start], stop[, step]),从指定范围内,按指定基数递增的集合中获取一个随机数

random.shuffle(x[,random]) 将一个列表中的元素打散

p = ["Python","is", "powerful","simple", "and so on..."] 

random.shuffle(p) 

         print p

random.sample(sequence,k) 从指定列表中随机获取指定长度的片断,不修改原列表

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 

slice = random.sample(list, 5)  #list中随机获取5个元素,作为一个片断返回 

print slice  print list #原有序列并没有改变      

随机验证码

import random

checkcode = ‘‘

for i in range(4):

    current = random.randrange(0,4)

    if current != i:

        temp = chr(random.randint(65,90)) #取A-(65-90)中随机一个字母

    else:

        temp = random.randint(0,9)  #取0-9中随机一个数字

    checkcode += str(temp)  

print checkcode

.write的时候报错,

UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 0-1: ordin

al not in range(128)

import sys

print sys.getdefaultencoding()

# ‘ascii‘

基本上是ascii编码方式,由此Python自然调用ascii编码解码程序去处理字符流,当字符流不属于ascii范围内,就会抛出异常(ordinal not in range(128)

解决方法

         import sys

         reload(sys)

         sys.setdefaultencoding(‘utf-8’)

. raw_input 中文在win终端不能正常显示,需要解码再编码

         raw_input("请输入密码:".decode(‘utf-8‘).encode(‘gbk‘))

python第五课

标签:python 模块

原文地址:http://120662.blog.51cto.com/110662/1719066

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