2016年5月14日 星期六

python 研究-常用函數

python常用函數

基本定製型

C.__init__(self[, arg1, ...]) 構造器(帶一些可選的參數)

C.__new__(self[, arg1, ...]) 構造器(帶一些可選的參數);通常用在設置不變資料類型的子類。

C.__del__(self) 解構器

C.__str__(self) 可列印的字符輸出;內建str()及print 語句

C.__repr__(self) 執行時的字串輸出;內建repr() 和『『 運算子

C.__unicode__(self)b Unicode 字串輸出;內建unicode()



C.__call__(self, *args) 表示可呼叫的範例

C.__nonzero__(self) 為object 定義False 值;內建bool() (從2.2 版開始)

C.__len__(self) 「長度」(可用於類);內建len()



特殊方法    描述

物件(值)比較c

C.__cmp__(self, obj) 物件比較;內建cmp()

C.__lt__(self, obj) and 小於/小於或等於;對應<及<=運算子

C.__gt__(self, obj) and 大於/大於或等於;對應>及>=運算子

C.__eq__(self, obj) and 等於/不等於;對應==,!=及<>運算子

屬性

C.__getattr__(self, attr) 獲取屬性;內建getattr();僅當屬性沒有找到時呼叫

C.__setattr__(self, attr, val) 設置屬性

C.__delattr__(self, attr) 刪除屬性

C.__getattribute__(self, attr) 獲取屬性;內建getattr();總是被呼叫

C.__get__(self, attr) (描述符)獲取屬性

C.__set__(self, attr, val)  (描述符)設置屬性

C.__delete__(self, attr)  (描述符)刪除屬性

定製類/模擬類型

數值類型:二進制運算子

C.__*add__(self, obj) 加;+運算子

C.__*sub__(self, obj) 減;-運算子

C.__*mul__(self, obj) 乘;*運算子

C.__*div__(self, obj) 除;/運算子

C.__*truediv__(self, obj)  True 除;/運算子

C.__*floordiv__(self, obj)  Floor 除;//運算子

C.__*mod__(self, obj) 取模/取餘;%運算子

C.__*divmod__(self, obj) 除和取模;內建divmod()

C.__*pow__(self, obj[, mod]) 乘冪;內建pow();**運算子

C.__*lshift__(self, obj) 左移位;<<運算子

特殊方法 描述

定製類/模擬類型

數值類型:二進制運算子



C.__*rshift__(self, obj) 右移;>>運算子

C.__*and__(self, obj) 按位與;&運算子

C.__*or__(self, obj) 按位或;|運算子

C.__*xor__(self, obj) 按位與或;^運算子

數值類型:一元運算子

C.__neg__(self) 一元負

C.__pos__(self) 一元正

C.__abs__(self) 絕對值;內建abs()

C.__invert__(self) 按位求反;~運算子

數值類型:數值轉換

C.__complex__(self, com) 轉為complex(複數);內建complex()

C.__int__(self) 轉為int;內建int()

C.__long__(self) 轉為long;內建long()

C.__float__(self) 轉為float;內建float()

數值類型:基本表示法(String)

C.__oct__(self) 八進製表示;內建oct()

C.__hex__(self) 十六進製表示;內建hex()

數值類型:數值壓縮

C.__coerce__(self, num) 壓縮成同樣的數值類型;內建coerce()

C.__index__(self)g 在有必要時,壓縮可選的數值類型為整型(比如:用於切片

索引等等



序列類型

C.__len__(self) 序列中項的數目

C.__getitem__(self, ind) 得到單個序列元素

C.__setitem__(self, ind,val) 設置單個序列元素

C.__delitem__(self, ind) 刪除單個序列元素

特殊方法 描述

序列類型

C.__getslice__(self, ind1,ind2) 得到序列片斷

C.__setslice__(self, i1, i2,val) 設置序列片斷

C.__delslice__(self, ind1,ind2) 刪除序列片斷

C.__contains__(self, val) f 測試序列成員;內建in 關鍵字

C.__*add__(self,obj) 串連;+運算子

C.__*mul__(self,obj) 重複;*運算子

C.__iter__(self)  新增迭代類;內建iter()



映射類別型

C.__len__(self) mapping 中的項的數目

C.__hash__(self) 散列(hash)函數值

C.__getitem__(self,key) 得到給定鍵(key)的值

C.__setitem__(self,key,val) 設置給定鍵(key)的值

C.__delitem__(self,key) 刪除給定鍵(key)的值

C.__missing__(self,key) 給定鍵如果不存在字典中,則提供一個預設值







記幾個常用的python函數,免得忘

獲得文件擴展名函數:返回擴展名 和 擴名之前的文件名路徑。

os.path.splitext('xinjingbao1s.jpg')

('xinjingbao1s', '.jpg')



os和os.path模組

os.listdir(dirname):列出dirname下的目錄和文件

os.getcwd():獲得當前工作目錄

os.curdir:返回但前目錄('.')

os.chdir(dirname):改變工作目錄到dirname



os.path.isdir(name):判斷name是不是一個目錄,name不是目錄就返回false

os.path.isfile(name):判斷name是不是一個文件,不存在name也返回false

os.path.exists(name):判斷是否存在文件或目錄name

os.path.getsize(name):獲得文件大小,如果name是目錄返回0L

os.path.abspath(name):獲得絕對路徑

os.path.normpath(path):規範path字串形式

os.path.split(name):分割文件名與目錄(事實上,如果你完全使用目錄,它也會將最後一個目錄作為文件名而分離,同時它不會



判斷文件或目錄是否存在)

os.path.splitext():分離文件名與擴展名

os.path.join(path,name):連接目錄與文件名或目錄

os.path.basename(path):返回文件名

os.path.dirname(path):返回文件路徑





1.重命名:os.rename(old, new)



2.刪除:os.remove(file)



3.列出目錄下的文件:os.listdir(path)



4.獲取當前工作目錄:os.getcwd()



5.改變工作目錄:os.chdir(newdir)



6.新增多級目錄:os.makedirs(r"c:\python\test")



7.新增單個目錄:os.mkdir("test")



8.刪除多個目錄:os.removedirs(r"c:\python") #刪除所給路徑最後一個目錄下所有空目錄。



9.刪除單個目錄:os.rmdir("test")



10.獲取文件屬性:os.stat(file)



11.修改文件權限與時間戳:os.chmod(file)



12.執行操作系統命令:os.system("dir")



13.啟動新進程:os.exec(), os.execvp()



14.在後台執行程式:osspawnv()



15.終止當前進程:os.exit(), os._exit()



16.分離文件名:os.path.split(r"c:\python\hello.py") --> ("c:\\python", "hello.py")



17.分離擴展名:os.path.splitext(r"c:\python\hello.py") --> ("c:\\python\\hello", ".py")



18.獲取路徑名:os.path.dirname(r"c:\python\hello.py") --> "c:\\python"



19.獲取文件名:os.path.basename(r"r:\python\hello.py") --> "hello.py"



20.判斷文件是否存在:os.path.exists(r"c:\python\hello.py") --> True



21.判斷是否是絕對路徑:os.path.isabs(r".\python\") --> False



22.判斷是否是目錄:os.path.isdir(r"c:\python") --> True



23.判斷是否是文件:os.path.isfile(r"c:\python\hello.py") --> True



24.判斷是否是鏈接文件:os.path.islink(r"c:\python\hello.py") --> False



25.獲取文件大小:os.path.getsize(filename)



26.*******:os.ismount("c:\\") --> True



27.搜索目錄下的所有文件:os.path.walk()



[2.shutil]



1.複製單個文件:shultil.copy(oldfile, newfle)



2.複製整個目錄樹:shultil.copytree(r".\setup", r".\backup")



3.刪除整個目錄樹:shultil.rmtree(r".\backup")



[3.tempfile]



1.新增一個唯一的臨時文件:tempfile.mktemp() --> filename



2.打開臨時文件:tempfile.TemporaryFile()



[4.StringIO] #cStringIO是StringIO模組的快速實現模組



1.新增記憶體文件並寫入初始資料:f = StringIO.StringIO("Hello world!")



2.讀入記憶體文件資料:print f.read() #或print f.getvalue() --> Hello world!



3.想記憶體文件寫入資料:f.write("Good day!")



4.關閉記憶體文件:f.close()



查看源程式碼列印幫助1 from time import *



2   



3 def secs2str(secs): 

4         return strftime("%Y-%m-%d %H:%M:%S",localtime(secs))  5   

5

6 >>> secs2str(1227628280.0) 

7 '2008-11-25 23:51:20'



將指定的struct_time(預設為當前時間),根據指定的格式化字串輸出

python中時間日期格式化符號:

%y 兩位數的年份表示(00-99)

%Y 四位數的年份表示(000-9999)

%m 月份(01-12)

%d 月內中的一天(0-31)

%H 24小時制小時數(0-23)

%I 12小時制小時數(01-12)

%M 分鐘數(00=59)

%S 秒(00-59)



%a 本地簡化星期名稱

%A 本地完整星期名稱

%b 本地簡化的月份名稱

%B 本地完整的月份名稱

%c 本地相應的日期表示和時間表示

%j 年內的一天(001-366)

%p 本地A.M.或P.M.的等價符

%U 一年中的星期數(00-53)星期天為星期的開始

%w 星期(0-6),星期天為星期的開始

%W 一年中的星期數(00-53)星期一為星期的開始

%x 本地相應的日期表示

%X 本地相應的時間表示

%Z 當前時區的名稱

%% %號本身



9.strptime(…)

strptime(string, format) -> struct_time

將時間字串根據指定的格式化符轉換成陣列形式的時間

例如:

2009-03-20 11:45:39 對應的格式化字串為:%Y-%m-%d %H:%M:%S

Sat Mar 28 22:24:24 2009 對應的格式化字串為:%a %b %d %H:%M:%S %Y



10.time(…)

time() -> floating point number

返回當前時間的時間戳



三、疑點

1.夏令時

在struct_time中,夏令時好像沒有用,例如

a = (2009, 6, 28, 23, 8, 34, 5, 87, 1)

b = (2009, 6, 28, 23, 8, 34, 5, 87, 0)

a和b分別表示的是夏令時和標準時間,它們之間轉換為時間戳應該相關3600,但是轉換後輸出都為646585714.0



四、小套用

1.python獲取當前時間

time.time() 獲取當前時間戳

time.localtime() 當前時間的struct_time形式

time.ctime() 當前時間的字串形式



2.python格式化字串

格式化成2009-03-20 11:45:39形式



  time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())格式化成Sat Mar 28 22:24:24 2009形式



  time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())3.將格式字串轉換為時間戳



  a = "Sat Mar 28 22:24:24 2009"

  b = time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))



python time datetime模組詳解

Time模組:

--------------------------

time() #以浮點形式返回自Linux新世紀以來經過的秒數。在linux中,00:00:00 UTC,



January 1, 1970是新**49**的開始。

>>> time.time()

1150269086.6630149

>>> time.ctime(1150269086.6630149)

>>> 'Wed Jun 14 15:11:26 2006'



time.ctime([sec])#把秒數轉換成日期格式,如果不帶參數,則顯示當前的時間。



>>> import time

>>> time.ctime()

>>> 'Wed Jun 14 15:02:50 2006'

>>> time.ctime(1138068452427683)

'Sat Dec 14 04:51:44 1901'

>>> time.ctime(os.path.getmtime('E:\\untitleds.bmp'))

'Fri Sep 19 16:35:37 2008'



>>> time.gmtime(os.path.getmtime('E:\\untitleds.bmp'))

time.struct_time(tm_year=2008, tm_mon=9, tm_mday=19, tm_hour=8, tm_min=35,



tm_sec=37, tm_wday=4, tm_yday=263, tm_isdst=0)



將一個文件的修改時間轉換為日期格式(秒 轉 日期)

>>> time.strftime('%Y-%m-%d %X',time.localtime(os.path.getmtime('E:\\untitleds.bmp')))

'2008-09-19 16:35:37'



#定時3秒。

>>> time.sleep(3)



TIME模組參考:

---------------------------------

#取一個文件的修改時間

>>> os.path.getmtime('E:\\untitleds.bmp')

1221813337.7626641



變數

timezone 通用協調時間和本地標準時間的差值,以秒為單位。

altzone 通用協調時間和本地夏令時的差值

daylight 標誌,本地時間是否反映夏令時。

tzname (標準時區名,夏令時時區名)

函數

time() 以浮點數返回紀元至今以來的秒數。

clock() 以浮點數返回CPU開始這個process的時間,(或者至上次呼叫這個函數的時間)

sleep() 延遲一段以浮點數表示的秒數。

gmtime() 把以秒錶示的時間轉換為通用協調時序列

localtime() 把秒時轉換為本地時序列

asctime() 將時間序列轉換成文本描述

ctime() 將秒時轉換成文本描述

mktime() 將本地時序列轉換成秒時

strftime() 以指定格式將序列時轉為文本描述

strptime() 以指定格式從文本描述中解析出時間序列

tzset() 改變當地時區值



DateTime模組

----------------------------

datetime 將日期轉化為秒

-------------------------------------

>>> import datetime,time

>>> time.mktime(datetime.datetime(2009,1,1).timetuple())

1230739200.0



>>> cc=[2000,11,3,12,43,33] #Attributes: year, month, day, hour, minute,



second

>>> time.mktime(datetime.datetime(cc[0],cc[1],cc[2],cc[3],cc[4],cc[5]).timetuple())

973226613.0



將秒轉換為日期格式

>>> cc = time.localtime(os.path.getmtime('E:\\untitleds.bmp'))

>>> print cc[0:3]

(2008, 9, 19)



DateTime示例

-----------------

演示計算兩個日期相差天數的計算

>>> import datetime

>>> d1 = datetime.datetime(2005, 2, 16)

>>> d2 = datetime.datetime(2004, 12, 31)

>>> (d1 - d2).days

47



演示計算執行時間的例子,以秒進行顯示

import datetime

starttime = datetime.datetime.now()

#long running

endtime = datetime.datetime.now()

print (endtime - starttime).seconds



演示計算當前時間向後10小時的時間。

>>> d1 = datetime.datetime.now()

>>> d3 = d1 + datetime.timedelta(hours=10)

>>> d3.ctime()



其本上常用的類有:datetime和timedelta兩個。它們之間可以相互加減。每個類都有一些方法和屬性可以查看具體的值

沒有留言:

張貼留言