<--目录-->

  • 模块和模块的常用方法

  • 函数式编程

  • yield

  • 三元运算

  • Lambda表达式

  • 内置涵数

  • 常用模块


【模块和模块的常用方法】 
至关重要的__init__.py    #包一定要有这个__init__.py文件,他才是包,这样才能通过form 包名 import 模块名(.py文件名)来去引用这个包的某个模块的某个函数功能

判断是否为主文件:__name__
 if __name__ == '__main__'
 
当前文件路径: __file__

当前文件描述: __doc__


1)if __name__ == '__main__'
例子1:
在main的包下面,有着index模块
在file的包下面,有着demo模块

cat index.py
#!/usr/bin/env python
#coding:utf-8
print __name__

python index.py
print __main__

cat demo.py
#!/usr/bin/env python
#coding:utf-8
print __name__

python demo.py
print __main__

例子2:
cat index.py
#!/usr/bin/env python
#coding:utf-8
from file import demo
print 'index',__name__

cat demo.py
#!/usr/bin/env python
#coding:utf-8
print 'demo',__name__
def Foo():
        print "老狗去砍柴"

python index.py
demo,file.demo
index,__main__

 

总结:通过if __name__ == '__main__':
来判断当前这个.py脚本是不是主程序,如果是主程序就执行,好处就是当***来***的时候,来调用我的主程序他调用不上

 

2)当前文件路径: __file__
3)当前文件描述: __doc__

例子:

[root@localhost opt]# pwd;ls
/opt/
test.py
cat 
test.py
#!/usr/bin/env python
#coding:utf-8
'''
This is g 
test
@author:wsyht
'''

4)print __file__   #查看当前文径路径
5)print __doc__    #查看模块(.py文件)的注释

[root@localhost opt]# python test.py test.py
This is g test@author:wsyht



【函数式编程】 
参数   def Fun(arg,*args,**kargs):
默认参数       print arg
可变参数       print args
               print kargs
返回值         return 'success'


1)默认参数和返回值示例
例子1:

def foo(name):
print name,'去砍柴'

foo('wsyht')
foo('jenkins')
foo('peter')


例子2:

def login(username):
if username == "wsyht":
return '登陆成功'
else:
return '登陆失败'
def detail(user):
print user,'验证成功'
if __name__ == '__main__':
user= raw_input('请输入用户名:')
res = login(user)  #检查用户是否登陆成功
if res == "登陆成功"
detail(user) #显示详细信息
else:
print "没奖金了"

  
例子3:

def foo(name,action='砍柴',where=''):   设置默认值=砍柴,可以加多个默认参数,但默认参数的一定要放在最后面
print name,'去',action,where

foo('wsyht','砍柴')
foo('jenkins','吃饭')  #不设置第二个值,就会使用设置好的默认参数"砍柴"
foo('peter',where='上海')  #默认按位置传参,指定where='上海',就是可以不用按顺序传,给他的值就是上海,不管上面where的位置在哪
foo('jim',where='上海',action="oo")  #默认按位置传参,指定where='上海',就是可以不用按顺序传,给他的值就是上海,不管上面where的位置在哪


2)可变参数示例
例子4:

#!/usr/bin/env Python
#coding:utf-8
'''
def show1(arg):
        for item in arg:
                print item

def show2(arg1,arg2):
        print arg1,arg2
        
#show1(['Lyang','wsyht'])


show2('Liyang','zhangsan')

def show(*arg):   #加一个*你就可以加N个参数
    for item in arg:
            print item

show('wsyht','tom','peter','jenkins','jack')
'''   
'''
def show(**kargs):   
    for item in kargs.items():
            print item
            
show(name='wsyht',age='26')
'''

#以元组方式传进去
def show(**kargs):    
    for item in kargs.items():
            print item  
user_dict={'k1':123,'k2':456}
show(**user_dict)  #元组方式传进去前面要加两个*


【yield的使用】
代码示例1:

#!/usr/bin/env python
#coding:utf-8
'''
print range(10)
print xrange(10)
for item in xrange(10): #便 利才生成数字
        print item

'''

def foo():
    yield 1    #eclipse上打上断点,debug测试
    yield 2
    yield 3
    yield 4
    yield 5

re = foo()
#print re  #调用的是生成器
for item in re:  #便利的时候才能使用re
        print item


代码示例2:

#!/usr/bin/env python
#coding:utf-8
def WsyhtReadlines():
    seek = 0
    while True:
        with open('F:/wsyht.txt','r') as f:
            f.seek(seek)
            data = f.readline()  #读取一行
            if data:
                seek = f.tell()
                yield data
            else:
                return #如果return了,那么整个函数将退出
#print WsyhtReadlines() #这样输出就是一个生成器
for item in WsyhtReadlines():
        print item

'''
f = open('d:/temp.txt,'r')
f.read()
f.close()

with open('d:/temp.txt','r') as f:  #这样写就不需要再对文件close了
    print 'xxxx'
print 'ok'
'''


【三元运算和Lambda表达式】 
1)三元运算
代码实例:

result = 'gt' if 1>3 else 'lt'    
print result

例子:
#!/usr/bin/env python
#coding:utf-8
temp = None
if 1>3:
    temp = 'gt'
else:
    temp = 'lt'
print temp

#上面方法实现跟下面代码方法实现效果一样

result = 'gt' if 1>3 else 'lt'    
print result


2)Lambda表达式
代码实例:

a = lambda x,y:x+y
print a(4,10)


例子:

#!/usr/bin/env pythondef foo(x,y):    return x+yprint 
foo(16,10)
temp = lambda x,y:x+y
print temp(16,10)
'''temp = lambda x:x*x
print temp(4)''''''temp = lambda x,y,z:x+y+z
print temp(1,3,5)'''
其它示例:>>> [i*2 for i in range(10)] [0, 2, 4, 6, 8, 10, 12, 
14, 16, 18]f>>> map(lambda x:x*2, range(10))[0, 2, 4, 6, 8, 10, 
12, 14, 16, 18]>>> map(lambda x:x**x, range(10)) [1, 1, 4, 27, 
256, 3125, 46656, 823543, 16777216, 387420489]>>>



【内置函数】
help()           #查看帮助
dir()            #把相应的key列出来,所有的内置函数
vars()           #列出所有key和Values,所有的内置函数
type()           #查看类型
import temp      #导入模块
reload(temp)     #重复导入模块
id()             #查看内存地址

#help,dir(),vars(),type()演示

>>> a = []  
#它是一个类,调用一个类来创建类表
>>> a1 = list()
>>> help(a)        
#查看帮助
>>> print dir()    #把相应的key列出来,所有的内置函数
>>> print 
vars()   #列出所有key和Values,所有的内置函数
>>> print type(a)  
#查看类型
>>> print type(a1) #查看类型


#reload(demo)演示
#file包下有一个demo.py模块文件
#main包下有一个index.py文件

#cat demo.py
#!/usr/bin/env python
#coding:utf-8
print 'demo.py'
#python index.py

#python index.py
#!/usr/bin/env python
#coding:utf-8
from file import demo  #当导入的时候就会执行一篇demo模块里面的所有代码
#from file import demo #Python下再用重复的代码导入相同的模块是不会导入的,他只导入一次
#如果想导两次,就要用reload(demo)
from file import demo
reload(demo)


#id演示,查看所占用的内存空间

>>> t1=123
>>> 
t2=888
>>> print id(t1)
28244048
>>> print 
id(t2)
28560048


cmp()    判断前后值大小,前大-1,后大1,同大0
abs()    求觉对值
bool()   0为False,其它为True
divmod() 求商取余
man()    求最大值
min()  求最小值
sum()  求和
pow()  求次方

>>> cmp(2,3)   #后面大负1
-1
>>> 
cmp(5,3)   #前面大正1
1
>>> cmp(5,5)   #等大出零
0
>>> 
print abs(-9)   #求觉对值
9
>>> print bool(0)   
#求布尔值
False
>>> print bool(1)
True
>>> print 
bool(15)
True
>>> print bool(-3)
True
>>> print 
divmod(9,4)  #求商取余
(2, 1)
>>> print divmod(14,4)
(3, 
2)
>>> print divmod(15,3)
(5, 0)
>>> print 
max([11,22,33,333])  #求最大值
333
>>> print min([11,22,33,333])  
#求最小值
11
>>> print sum([11,22,33])    #求和
66
>>> 
print pow(2,3)  
#2的3次方
8


all() 一假则假,全真才真
any() 一真则真,全假才假

>>> print all([1,2,3,0])   
#一假则假
False
>>> print all([1,2,3,1])   
#全真则真
True
>>> print any([0,0,0,0])   
#全假则假
False
>>> print any([1,0,0,0])   
#一真则真
True
>>> print any([1,2,3,1])
True
>>> print 
bool('')
False
>>> print bool(None)  
False


chr() ASCALL码对应的字符   #必须记住 

ord() ASCALL码对应的数字   #必须记住 

hex() 十六进制转换
oct() 八进制转换
bin() 二进制转换

>>> print chr(65)  
#ASCALL码对应的字符
A
>>> print chr(66)
B
>>> print 
chr(67)
C
>>> print chr(68)
D
>>> print chr(69)    
E
>>> print ord('A')   #ASCALL码对应的数字
65
>>> print 
ord('B')
66
>>> print hex(2000)   
#十六进制转换
0x7d0
>>> print oct(2000)   
#八进制转换
03720
>>> print bin(2)      
#二进制转换
0b10


enumerate()  加序列号     #必须记住

format()     格式化输出

>>> li = ['手表','汽车','房'] 
>>> for item in li:print item
... 
手表
汽车

>>> for item in enumerate(li):print item   
#enumerate是加序列号
... 
(0, '\xe6\x89\x8b\xe8\xa1\xa8')
(1, 
'\xe6\xb1\xbd\xe8\xbd\xa6')
(2, '\xe6\x88\xbf')
>>> for item in 
enumerate(li,1):print item   #括号第二个参数是指起始值
... 
(1, 
'\xe6\x89\x8b\xe8\xa1\xa8')
(2, '\xe6\xb1\xbd\xe8\xbd\xa6')
(3, 
'\xe6\x88\xbf')
>>> for item in enumerate(li,3):print item 
... 
(3, '\xe6\x89\x8b\xe8\xa1\xa8')
(4, '\xe6\xb1\xbd\xe8\xbd\xa6')
(5, 
'\xe6\x88\xbf')
>>> for item in enumerate(li,1):print 
item[0],item[1]
... 
1 手表
2 汽车
3 房
>>> s='My Name {0} 
{1}'         
>>> print s.format('is','wsyht')
My Name is 
wsyht
>>> s='My Name {0},{1}'         
>>> print 
s.format('is','wsyht')
My Name 
is,wsyht


#调用函数的两种方法

def function(arg): print arg  
function('wsyht')    #第一种调用方法
apply(function,('wsyht'))  #执行函数,第二种调用方法,这种应用不广泛,知道就好


#map的使用,所有数进行相加,相减,相乘等

>>> print map(lambda x:x+1,[1,2,3]) 
#all[2, 3, 4]
>>> li = [11,22,33]    #第一种方法>>> 
temp=[]>>> for item in li:temp.append(item + 100)... 
>>> print temp[111, 122, 133]
>>> def foo(arg):return arg + 100    #第二种方法... >>> 
li = [11,22,33]>>> temp=[]>>> for item in 
li:temp.append(foo(item))... >>> print temp[111, 122, 
133]
>>> def foo(arg):return arg + 100   #使用map的方法... 
>>> li = [11,22,33]>>> temp = 
map(foo,li)>>> print temp[111, 122, 133]
>>> li = [11,22,33]>>> temp = map(lambda 
arg:arg+100,li)   #最简单的map方法把他便利出来>>> print temp[111, 122, 
133]


#filter的使用,过滤条件,只有是True序列的,才会对他进行相加,相减操作

#!/usr/bin/env 
python
#coding:utf-8
li = [2,5,11,22,33]
def foo(arg):
    if 
arg<22:
        return True
    else:
        return False
temp = 
filter(foo,li)
print 
temp


#reduce的使用,累加,累乘操作

>>> li=[2,5,7]
>>> print 
reduce(lambda x,y:x+y,li)   #最少要有两个变量x,y
14
>>> print 
reduce(lambda 
x,y:x*y,li)
70


#zip的使用,把他们的列表的每一列拼接成一组打印出来

>>> x = [1,2,3] 
>>> y = 
[4,5,6] 
>>> z = [7,8,9]
>>> q = [1,3,5]
>>> 
print zip(x,y,z,q)
[(1, 4, 7, 1), (2, 5, 8, 3), (3, 6, 9, 5)]
>>> 
q = [1,3,5]     
>>> x = [2,4,6]
>>> z = [2,4]   
>>> print zip(q,x,z)
[(1, 2, 2), (3, 4, 
4)]


#eval的使用

>>> a = '8*8'    
>>> print 
a
8*8
>>> print eval(a)
64


#反射,__import__()的使用,通过字符串的形式去导入模块,并以字符串的形式执行函数
附加知识:
getattr()  #获取模块的函数数
hasattr()  #判断模块有没有这个函数
delattr()  #删除这个模块的某个函数

#查看帮助
#import os
#help(os)

演示1:通过字符串的形式去导入模块

>>> temp = 'sys'
>>> model = 
__import__(temp)
>>> print model.path
['', 
'/usr/local/python2.7/lib/python27.zip', '/usr/local/python2.7/lib/python2.7', 
'/usr/local/python2.7/lib/python2.7/plat-linux2', 
'/usr/local/python2.7/lib/python2.7/lib-tk', 
'/usr/local/python2.7/lib/python2.7/lib-old', 
'/usr/local/python2.7/lib/python2.7/lib-dynload', 
'/usr/local/python2.7/lib/python2.7/site-packages']


#演示2:
main包下有三个模块,index.py ,mysqlserver.py,sqlserver.py

cat 
mysqlserver.py
#!/usr/bin/env python
def count():
 return 2
cat sqlserver
#!/usr/bin/env python
def count():
 return 2


#index.py例子1,通过字符串的形式去导入模块

#!/usr/bin/env python
'''
import mysqlserver
print mysqlserver.count()

import sqlserver
print sqlserver.count()
'''
temp = 'mysqlserver'   #动态切换模块,模块下执行的方法一样,当一个宕掉了,可以快速切换,比上述方法方便快速
model = __import__(temp)
model.count()


#index.py例子2,

cat index.py    
temp = 'mysqlserver'  #模块名字
func = 'count'  #函数名字 
model = __import__(temp)   #以字符串的形式导入模块
function = getattr(model,func)   #获取model模块找func函数
print function() #以字符串的形式执行函数
#val = hasattr(model,'version') #判断model模块里有没有version这个函数
#print val
#dels = delattr(model,'count') #删除model模块里的count函数
#print dels

#用在开发大型程序,随时可以切换数据库的场景下

 

【常用模块】

1)random模块

#random生成验证码,生成数字

>>> import random
>>> print random.random()   #0到1之间
0.455011787105
>>> print random.random()
0.0645256529981
>>> print random.random()
0.881869685668


>>> print random.randint(1,5)   #生成1到5包括1和5
5
>>> print random.randint(1,5)
1
>>> print random.randint(1,5)
3
>>> print random.randint(1,5)
1
>>> print random.randint(1,5)
5
>>> print random.randint(1,5)
1
>>> print random.randint(1,5)
4
>>> print random.randint(1,5)
2


>>> print random.randrange(1,3)     #生成1,2但小于3的数
2
>>> print random.randrange(1,3)
2
>>> print random.randrange(1,3)
2
>>> print random.randrange(1,3)
2
>>> print random.randrange(1,3)
2
>>> print random.randrange(1,3)
2
>>> print random.randrange(1,3)
2
>>> print random.randrange(1,3)
1
>>> print random.randrange(1,3)
1


#生成字母

>>> temp = random.randint(65,90)
>>> print chr(temp)



#验证码案例:

#!/usr/bin/env python
#coding:utf-8
import random
code = []
for i in range(6):
    if i == random.randint(0,5):
        code.append(str(random.randint(0,5)))
    else:
        temp = random.randint(65,90)
        code.append(chr(temp))
print ''.join(code)



2)hashlib模块

#md5加密

>>> import hashlib
>>> hash = hashlib.md5()   #创建一个md5()对像,
>>> hash.update('admin')   #对像里有一个update函数,把admin通过md5加密
>>> hash.hexdigest()       #输出十六进制数
'21232f297a57a5a743894a0e4a801fc3'
>>> hash.digest()          
'!#/)zW\xa5\xa7C\x89J\x0eJ\x80\x1f\xc3'


3)序列化和json

pickle序列化:可以把一个对像或一个列表或一个字典通过Python特有的机制序列化,还可以反序列化

特殊二进制的方式加密一下,

>>>import pickle
>>>li = ['wsyht',11,22,'ok','yes']
>>>dumpsed = pickle.dumps(li)  #序列化
>>>print dumpsed
>>>print type(dumpsed)   #查看类型已经序列化成字符串
>>>loadsed = pickle.loads(dumpsed) #反序列化
>>>print loadsed
>>>print type(loadsed)  #查看类型又反序列化成了列表


#!/usr/bin/env python
import pickle
li = ['wsyht',11,22,'ok','yes']
pickle.dump(li,open('f:/temp.txt','w')) #序列化到文件


应用场景:在Python和Python之间文件传输的时候给他序列化,内存之间数据交互


pickle和json的区别

pickle只能在Python中用

json是所有的语言都支持的数据接口格式,java和python想在内存之间做数据交互就要用json否则用pickle即可

pickle所有数据类型都可以序列化,

json他只能去序列化常规的数据类型

>>> import json
>>> name_dic = {'name':'wsyht','age':23}
>>> json.dumps(name_dic)
'{"age": 23, "name": "wsyht"}'
>>> serialized_obj = json.dumps(name_dic)
>>> json.loads(serialized_obj)
{u'age': 23, u'name': u'wsyht'}
>>> import pickle
>>> pickle.dumps(name_dic)
"(dp0\nS'age'\np1\nI23\nsS'name'\np2\nS'wsyht'\np3\ns."


#pickle序列化之后看不清里面的内容

#json序列化之后可以看清里面的内容


4)os模块

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd
os.curdir  返回当前目录: ('.')
os.pardir  获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    可生成多层递归目录
os.removedirs('dirname1')    若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  删除一个文件
os.rename("oldname","newname")  重命名文件/目录
os.stat('path/filename')  获取文件/目录信息
os.sep    输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    输出用于分割文件路径的字符串
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.path.basename(path)  返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path)  如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path)  如果path是绝对路径,返回True
os.path.isfile(path)  如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path)  如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path)  返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间


5)sys模块

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0)
sys.version        获取Python解释程序的版本信息
sys.maxint         最大的Int值
sys.maxunicode     最大的Unicode值
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]
print val


6)re模块

compile

match search findall

group groups

正则表达式常用格式:


  字符:\d \w \t  . 


  次数:* + ? {m} {m,n}


示例:

#!#/usr/bin/env python
#coding:utf-8
import re 
result1 = re.match('\d+', '1afsfweasfcxvsfd123')  #在你给的字符串起始位置去匹配,\d从数字开始找,+表示一个到多个
if result1:   #当result1等于True的时候,就是匹配,如果匹配就输出里面的内容
    print result1.group()  #用group方法把他匹配的内容输出出来
else:
    print 'nothing'
result2 = re.search('\d+', 'alsfj3af') #在整个内容里面去匹配,\d从数字开始找,+表示一个到多个
if result2:
    print result2.group()    #用group方法把他匹配的内容输出出来
result3 = re.findall('\d+', 'asfaf11sf22lj33') #只要匹配全都拿出来
print result3
com = re.compile('\d+')
print com.findall('asfaf11sf22lj33')
result5 = re.search('(\d+)\w*(\d+)','aasflsjfa12aaljsf22lj13bb')
print result5.group()   #所有匹配内容输出
print result5.groups()  #只把括号\d,也就是组里面的内容输出
result6 = re.search('a{3,5}','aaaaaa') #匹配3到5次的aaaaa输出出来
print result6.group()



总结:

match:只在第一个字符串开始找,如果没有匹配,则不再继续找,如果第一个字符串中有,则只输出第一个

searh: 在所有内容里找,直到找到为止,但只输出找到的第一个

findall:把所有找到的匹配的内容,都通过列表的形式打印出来

compile: 编译之后再去匹配,这样可以加快匹配的速度

group: 把他匹配的内容输出出来

groups:分组


匹配的字符:

\d:表示数字的意思

\w: 代表下划线,字母,数字

\t:制表符,除了回车以外的所有字符


匹配的次数:

* 大于等于0,0到多个

+ 大于等于1,1个到多个

?  0或1

{m} 次数,如a{6},出现6次a的进行匹配

{m,n} 如a{3,7} 出现3到7次的就进行匹配


例子1:

法1

>>> ip = '12.23.84.dsfa.23s.3234~lsjfw+23sfaf192.168.32.43_w342d~@#9436'
>>> import re                  
>>> re.findall('[0-9]{1,3}',ip)
['12', '23', '84', '23', '323', '4', '23', '192', '168', '32', '43', '342', '943', '6']
>>> re.findall('[0-9]{1,3}\.[0-9]{1,3}',ip)
['12.23', '192.168', '32.43']
>>> re.findall('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',ip)
['12.23.84', '192.168.32']
>>> re.findall('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',ip)
['192.168.32.43']

法2:

>>> re.findall('(\d+)',ip)  
['12', '23', '84', '23', '3234', '23', '192', '168', '32', '43', '342', '9436']
>>> re.findall('(\.+\d+){1,3}',ip)
['.84', '.23', '.3234', '.43']
>>> re.findall('(?:\.+\d+){1,3}',ip)    #?:表示匹配括号的那一组数据,必须连着
['.23.84', '.23', '.3234', '.168.32.43']
>>> re.findall('[0-9]{1,3}(?:\.+\d+){3}',ip)  
['192.168.32.43']


法3:

>>> re.findall('(?:\d+\.+){3}\d{1,3}',ip)  
['192.168.32.43']


法4:

>>> re.findall('(?:\d{1,3}\.){3}\d{1,3}',ip)    
['192.168.32.43']


7)time模块

三种表示主式:

1、时间戳 1970年1月1日后的秒

2、元组包含了:年、日、星期等...time.struct_time

3、格式化的字符串 2014-11-11 11:11 print time.time()


#时间戳形式存在

print time.time()
print time.mktime(time.localtime())  #print (time.localtime())此为元组形式,这一整句意思是把元组形式转化成时间戳形式

#元组形式存在

print time.gmtime() #可加时间戳参数
print time.localtime() #可加时间戳参数
print time.strptime('2014-11-11','%Y-%m-%d') #字符串形式转换成元组形式


#字符串形式存在

print time.strftime('%Y-%m-%d')  #默认当前时间,必须记住,工作中用得最多
print time.strftime('%Y-%m-%d',time.localtime())  #默认当前时间
print time.asctime()
print time.asctime(time.localtime())
print time.ctime(time.time())



时间的三种表示方式演示

>>> import time
>>> print time.time()
1469014348.5   #秒,时间戳的方式
>>> print time.gmtime()
time.struct_time(tm_year=2016, tm_mon=7, tm_mday=20, tm_hour=11, tm_min=25, tm_sec=53, tm_wday=2, tm_yday=202, tm_isdst=0)
>>> print time.strftime('%Y-%m-%d %H:%M:%S')
2016-07-20 19:36:16




wKioL1ePbauS5XP3AABYCtguAQA474.png

wKiom1ePbauwMAm_AABPZBEWhNY160.png


8)datetime模块

import datetime
'''
datetime.date:表示日期的类。常用的属性有year, month, day
datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond
datetime.datetime:表示日期时间
datetime.timedelta:表示时间间隔,即两个时间点之间的长度
timedelta([days[, seconds[, microseconds[, milliseconds[, minutes[, hours[, weeks]]]]]]])
strftime("%Y-%m-%d")
'''
import datetime
print datetime.datetime.now()
print datetime.datetime.now() - datetime.timedelta(days=5)


9)shutil模块

windows系统下使用的模块

import shutil
shutil.copyfile('f:/temp.txt', 'f:/os.txt') #复制文件
shutil.copytree('f:/temp', 'f:/os')  #复制目录