Python筆記第3章,模塊和模塊的常用方法,函數式編程yield,三元運算Lambda表達式,內置涵數,常用模塊

<--目錄-->

  • 模塊和模塊的常用方法

  • 函數式編程

  • 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')  #複製目錄


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章