1. 程式人生 > >python常見命令

python常見命令

cond 回文 它的 包含 logger 工具 mos line 系統

http://www.bubuko.com/infodetail-1193119.html 練習題答案 http://www.mamicode.com/info-detail-1113345.html python常用標準庫 http://lizhenliang.blog.51cto.com/7876557/1872538 python challenge http://www.cnblogs.com/jimnox/archive/2009/12/08/tips-to-python-challenge.html 0. 搭建虛擬環境 sudo apt-get install python-pip sudo apt-get install python-virtualenv #安裝本地虛擬環境管理工具 mkdir ~/django # 創建目錄 cd ~/django virtualenv venv #在~/django目錄下,創建一個venv的虛擬環境 source venv/bin/activate #開啟虛擬環境 1. 清屏 方法一 ----還是這個好! import os os.system("clear") 方法二 import subprocess subprocess.call("clear") 2. 寫文件內容的2個方法 法1 f = open(‘print.txt‘,‘w‘) f.write("my name is hong") f.close() 法2 f=open(‘print.txt‘,‘w‘) print >> f,"my name is hong" f.close() 3. 讀文件內容的兩種方法 法1 d=open(‘a.txt‘,‘r‘) print d.readline #讀取第一行內容 print d.readline #讀取第2行內容 print d.read(100) #讀取從0-100的所有內容,這裏的100好像是字符數,可以隨文本大小自行調整 d.seek(0) #使讀取指針歸0,也就是從0開始讀取文本,和上條命令配合使用 法2 import linecache print linecache.getline(‘a.txt‘,1) #讀第一行 print linecache.getline(‘a.txt‘,2) #讀第二行 4. 字符拼接的五種方法 1) >>> print a+b 2) >>> print "%s %s" %(a,b) 3) >>> c="{}{}".format(a,b) print c 如果想調整一下輸出參數的順序,那麽可以這樣寫 b = "this is {1} {0}" .format ("my","apple"),那麽輸出結果就是 this is apple my 需要註意的是參數從0開始 算參數位置太麻煩,有時候還出錯,來種更人性化的方法 b = "this is {whose} {fruit}" .format (fruit="apple",whose="my") print b 輸出為this is my apple 4) >>> d="%()s %()s" %{‘‘:a,‘‘:b} >>> print d a = "this is %(whose)s %(fruit)s" % {‘whose‘:‘my‘,‘fruit‘:‘apple‘} 其中whose:my, whose是key位,my是word位 5) 請將a與b拼接成字符串c,並用逗號分隔。 >>> c=",".join([a,b]) #join()函數中的參數a,b必須是字符串, >>> print c 拓展 請將a字符串的數字取出,並輸出成一個新的字符串 >>> a="aAsmr3idd4bgs7Dlsf9eAF" >>> "".join([x for x in a if x.isdigit()]) ‘3479‘ 5. list轉換成string的方法 方法1,使用join函數--適用於列表元素必須是字符串,不能是int,比如1,2,3 a=[‘a‘,‘b‘,‘c‘] info=‘‘.join(a) 方法2,使用str函數--適用於列表元素是數字 已知 a = [1,2,3,6,8,9,10,14,17], 請將該list轉換為字符串,例如 ‘123689101417‘. str(a)[1:-1].replace(‘, ‘,‘‘) #把逗號和空格替換為空 ‘123689101417‘ 相對應的, python中應該如何修改string呢? 方法1. 轉成list來修改 info = "abc" a=list(info) a[2]=‘d‘ info="".join(a) 方法2. 使用repalce()函數 s="i, am, lilei" >>> s=s.replace("am","was") >>> s ‘i,was,lilei‘ 6. 在python命令行裏,輸入import this 以後出現的文檔,統計該文檔中,"be" "is" "than" 的出現次數。 import os m=os.popen(‘python -m this‘).read() #python -m this 在linux命令行中執行,相當於在python命令行中執行import this。os.popen(...)可以直接執行命令行 m=m.replace(‘\n‘,‘ ‘) #去掉回車符,可能造成語義混淆 i=m.split(‘ ‘) #用空格作為分隔符,來找出每一個單詞 print [(x,i.count(x)) for x in [‘be‘,‘is‘,‘than‘]] 註意: 1)解釋python -m http://www.cnblogs.com/xueweihan/p/5118222.html 2) popen(...) popen(command [, mode=‘r‘ [, bufsize]]) -> pipe Open a pipe to/from a command returning a file object. 7. 查看引用次數 一切變量都是數據對象的引用, python中引用數目是從3開始,引用一次加1,去引用一次減1 python內部的引用計數,sys.getrefcount import sys a=‘hello‘ sys.getrefcount(‘hello‘) 輸出為3---python中初始數為3 e=‘hello‘ sys.getrefcount(‘hello‘) 輸出為4 a=1 sys.getrefcount(‘hello‘) 輸出為3,說明引用被銷毀一次。 總結一下對象會在一下情況下引用計數加1: 1.對象被創建:x=4 2.另外的別人被創建:y=x 3.被作為參數傳遞給函數:foo(x) 4.作為容器對象的一個元素:a=[1,x,‘33‘] 引用計數減少情況 1.一個本地引用離開了它的作用域。比如上面的foo(x)函數結束時,x指向的對象引用減1。 2.對象的別名被顯式的銷毀:del x ;或者del y 3.對象的一個別名被賦值給其他對象:x=789 4.對象從一個窗口對象中移除:myList.remove(x) 5.窗口對象本身被銷毀:del myList,或者窗口對象本身離開了作用域。垃圾回收 8. 請將模塊string的幫助文檔保存為一個文件。 http://bbs.sjtu.edu.cn/bbstcon?board=Script&reid=1406189687 import string import sys out = sys.stdout sys.stdout = open("help.txt", "w") help(string) #help(string)輸出的信息會被記錄到help.txt中 sys.stdout.close() sys.stdout = out 9. 查看模塊中函數的內置方法 例如,想知道urlilb.urlopen裏面都有什麽方法可以調用 1. 先用dir(urllib),找到裏面有urlopen函數,這個時候用help, 或者dir來查看urllib.urlopen是看不到裏面的方法的 2. 給urllib.urlopen賦值給一個對象,比如 name = urllib.urlopen("http://www.baidu.com") 3. 此時dir(name),就可以查看到urlopen的方法了。 10. os模塊詳解 http://www.cnblogs.com/kaituorensheng/archive/2013/03/18/2965766.html 1. os.name——判斷現在正在實用的平臺,Windows 返回 ‘nt‘; Linux 返回’posix‘ 2. os.getcwd()——得到當前工作的目錄。 3. os.listdir()——指定所有目錄下所有的文件和目錄名。例: >>> os.listdir("/home") [‘axinfu‘] 當前目錄 >>> os.listdir(".") [ ‘p1.py‘, ‘m1.py‘, ‘a.py‘, ‘.bash_logout‘, ‘m1.py‘, ‘.bashrc‘, ‘.viminfo‘, ‘loopdir‘, ‘.profile‘, ‘initrd.gz‘, ‘.bash_history‘] 以列表的形式全部列舉出來,其中沒有區分目錄和文件。 4. os.remove()——刪除指定文件 >>> os.remove("a.py") 5. os.rmdir()——刪除指定目錄 6. os.mkdir()——創建目錄 註意:這樣只能建立一層,要想遞歸建立可用:os.makedirs() 7. os.path.isfile()——判斷指定對象是否為文件。是返回True,否則False 8. os.path.isdir()——判斷指定對象是否為目錄。是True,否則False。例: >>> os.path.isfile("m1.py") True 9. os.path.exists()——檢驗指定的對象是否存在。是True,否則False.例: 10. os.path.split()——返回路徑的目錄和文件名。例: 技術分享圖片 此處只是把前後兩部分分開而已。就是找最後一個‘/‘。看例子: 技術分享圖片 11. os.getcwd()——獲得當前工作的目錄(get current work dir) 12. os.system()——執行shell命令,linux下的命令基本都能執行。例: 技術分享圖片 註意:此處運行shell命令時,如果要調用python之前的變量,可以用如下方式: var=123 os.environ[‘var‘]=str(var) //註意此處[]內得是 “字符串” os.system(‘echo $var‘) 13. os.chdir()——改變目錄到指定目錄 14. os.path.getsize()——獲得文件的大小,如果為目錄,返回0 15. os.path.abspath()——獲得絕對路徑。例: 技術分享圖片 16. os.path.join(path, name)——連接目錄和文件名。例: 技術分享圖片 17.os.path.basename(path)——返回文件名 技術分享圖片 18. os.path.dirname(path)——返回文件路徑 技術分享圖片 19. 獲得程序所在的實際目錄 技術分享圖片 import os import sys if __name__ == "__main__": print os.path.realpath(sys.argv[0]) print os.path.split(os.path.realpath(sys.argv[0])) print os.path.split(os.path.realpath(sys.argv[0]))[0] 技術分享圖片 執行結果
1 2 3 /home/jihite/ftp/del.py (‘/home/jihite/ftp‘, ‘del.py‘) /home/jihite/ftp 
細節——os.path.spilit()把目錄和文件區分開
1 2 3 4 5 >>> import os >>> os.path.split("a/b/c/d") (‘a/b/c‘, ‘d‘) >>> os.path.split("a/b/c/d/") (‘a/b/c/d‘, ‘‘)
   11. logging模塊 http://blog.csdn.net/liuchunming033/article/details/39080457 http://blog.csdn.net/zyz511919766/article/details/25136485/

1.簡單的將日誌打印到屏幕

import logging logging.debug(‘This is debug message‘) logging.info(‘This is info message‘) logging.warning(‘This is warning message‘) 屏幕上打印: WARNING:root:This is warning message
默認情況下,logging將日誌打印到屏幕,日誌級別為WARNING; 日誌級別大小關系為:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,當然也可以自己定義日誌級別。

2.通過logging.basicConfig函數對日誌的輸出格式及方式做相關配置

import logging logging.basicConfig(level=logging.DEBUG, format=‘%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s‘, datefmt=‘%a, %d %b %Y %H:%M:%S‘, filename=‘myapp.log‘, filemode=‘w‘) logging.debug(‘This is debug message‘) logging.info(‘This is info message‘) logging.warning(‘This is warning message‘) ./myapp.log文件中內容為: Sun, 24 May 2009 21:48:54 demo2.py[line:11] DEBUG This is debug message Sun, 24 May 2009 21:48:54 demo2.py[line:12] INFO This is info message Sun, 24 May 2009 21:48:54 demo2.py[line:13] WARNING This is warning message
logging.basicConfig函數各參數: filename: 指定日誌文件名 filemode: 和file函數意義相同,指定日誌文件的打開模式,‘w‘或‘a‘ format: 指定輸出的格式和內容,format可以輸出很多有用信息,如上例所示: %(levelno)s: 打印日誌級別的數值 %(levelname)s: 打印日誌級別名稱 %(pathname)s: 打印當前執行程序的路徑,其實就是sys.argv[0] %(filename)s: 打印當前執行程序名 %(funcName)s: 打印日誌的當前函數 %(lineno)d: 打印日誌的當前行號 %(asctime)s: 打印日誌的時間 %(thread)d: 打印線程ID %(threadName)s: 打印線程名稱 %(process)d: 打印進程ID %(message)s: 打印日誌信息 datefmt: 指定時間格式,同time.strftime() level: 設置日誌級別,默認為logging.WARNING stream: 指定將日誌的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,默認輸出到sys.stderr,當stream和filename同時指定時,stream被忽略 12. 常見模塊 http://lizhenliang.blog.51cto.com/7876557/1872538 1、sys 1)sys.argv, 腳本名1.py, 命令行中執行python 1.py a b c, 腳本基本內容如下 import sys print sys.argv[0] #1.py print sys.argv[1] #a print sys.argv #[‘1.py‘, ‘a‘, ‘b‘, ‘c‘] print len(sys.argv) #算上腳本名長度為4 print len(sys.argv[1:]) #獲取參數長度3。 2)標準輸入 import sys name = raw_input("Please input your name: ") print name 拓展:a.py的標準輸出作為b.py的標準輸入 # cat a.py import sys sys.stdout.write("123456\n") sys.stdout.flush() # cat b.py import sys print sys.stdin.readlines() 命令行中執行 python a.py | python b.py 輸出結果為:[‘123456\n‘] 3)實時動態輸出信息,每隔一秒輸出數字 import sys for i in range(5): import time print i, sys.stdout.flush() time.sleep(1) 2、os 1)os.makedirs:在當前路徑遞歸創建文件夾,例如當前目錄為/home/axinfu 註意:os.makedirs("./abc/b"), 不能寫成os.makedirs("home/axinfu/abc/b"),這樣會在當前目錄下再創建一個home目錄。 2)目錄樹生成器os.walk(path) >>> for path,dir,file in os.walk(‘/home/axinfu/test‘): ... print path ... print dir ... print file ... /home/axinfu/test [] [‘3.py‘, ‘2.py‘, ‘1.py‘] 3、glob 文件查找,支持通配符(*、?、[])
1 2 3 4 5 6 7 8 9 10 11 # 查找目錄中所有以.sh為後綴的文件 >>> glob.glob(‘/home/user/*.sh‘) [‘/home/user/1.sh‘, ‘/home/user/b.sh‘, ‘/home/user/a.sh‘, ‘/home/user/sum.sh‘] # 查找目錄中出現單個字符並以.sh為後綴的文件 >>> glob.glob(‘/home/user/?.sh‘) [‘/home/user/1.sh‘, ‘/home/user/b.sh‘, ‘/home/user/a.sh‘] # 查找目錄中出現a.sh或b.sh的文件 >>> glob.glob(‘/home/user/[a|b].sh‘) [‘/home/user/b.sh‘, ‘/home/user/a.sh‘]
4、math 5、random 6、platform 7、pikle與cPikle 示例,將字典序列化到文件: >>> import pickle >>> dict = {‘a‘:1, ‘b‘:2, ‘c‘:3} >>> output = open(‘data.pkl‘, ‘wb‘) # 二進制模式打開文件 >>> pickle.dump(dict, output) # 執行完導入操作,當前目錄會生成data.pkl文件 >>> output.close() # 寫入數據並關閉 讀取序列化文件: >>> f = open(‘data.pkl‘) >>> data = pickle.load(f) >>> print data {‘a‘: 1, ‘c‘: 3, ‘b‘: 2} 8、subprocess 1)subprocess.call():運行命令與參數。等待命令完成,返回執行狀態碼。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 >>> import subprocess >>> retcode = subprocess.call(["ls", "-l"]) #這裏的“-l”是字母L,其實就是執行ls -l total 504 -rw-r--r-- 1 root root 54 Nov 2 06:15 data.pkl >>> retcode #正確執行就返回0 0 >>> retcode = subprocess.call(["ls", "a"]) ls: cannot access a: No such file or directory >>> retcode #執行失敗就返回非0 2 # 也可以這樣寫 >>> subprocess.call(‘ls -l‘, shell=True) >>> subprocess.check_call("ls a", shell=True) #subprocess.check_call():運行命令與參數。如果退出狀態碼非0,引發CalledProcessError異常,包含狀態碼。 ls: cannot access a: No such file or directory Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/subprocess.py", line 540, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command ‘ls a‘ returned non-zero exit status 2
拓展: 1. 用subprocess.check_call("ls -l a", shell=True),ls後面可以加任意參數,需要拋出異常的時候使用不錯,如果沒異常就會正常顯示 2. 使用第一種方法 retcode=subprocess.call(["ls","-l"])時,可以在列表中加入指定文件夾名,比如retcode=subprocess.call(["ls","-l","a"]),把命令,參數,文件名都當作列表中的元素 2)subprocess.Popen(): 例子1 >>> p = subprocess.Popen(‘dmesg |grep eth0‘, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) >>> p.communicate() ...... # 元組形式返回結果 >>> p.pid #獲取子進程PID 57039 >>> p.wait() #等待子進程終止,返回狀態碼 0 >>> p.returncode #返回子進程狀態碼 0 subprocess.PIPE提供了一個緩沖區,將stdout、stderr放到這個緩沖區中,p.communicate()讀取緩沖區數據。緩沖區的stdout、stderr是分開的,可以以p.stdout.read()方式獲得標準輸出、錯誤輸出的內容。 例子2:標準輸出作為下個Popen任務的標準輸入: >>> p1 = subprocess.Popen(‘ls‘, stdout=subprocess.PIPE, shell=True) >>> p2 = subprocess.Popen(‘grep data‘, stdin=p1.stdout, stdout=subprocess.PIPE, shell=True) >>> p1.stdout.close() # 調用後啟動p2,為了獲得SIGPIPE >>> output = p2.communicate()[0] #這裏的[0]貌似是指文件名 >>> output ‘data.pkl\n‘ p1的標準輸出作為p2的標準輸入。這個p2的stdin、stdout也可以是個可讀、可寫的文件。 9、Queue:隊列,數據存放在內存中,一般用於交換數據。 >>> from Queue import Queue >>> q = Queue() >>> q.put(‘test‘) #寫入項目到隊列 >>> q.qsize() 1 >>> q.get() #從隊列中刪除並返回一個項目 ‘test‘ >>> q.qsize() #返回隊列大小 0 >>> q.full() #如果隊列是滿的返回True,否則返回False False >>> q.empty() #如果隊列為空返回True,否則返回False True 10、StringIO:將字符串存儲在內存中,像操作文件一樣操作。 上面網站中的代碼第一步是錯誤的,參考這個網站http://www.cnblogs.com/sislcb/archive/2008/11/27/1341996.html 例子1 >>> import StringIO >>> f=StringIO.StringIO() >>> f.write(‘hello‘) >>> f.getvalue() ‘hello‘ 例子2,用一個字符串初始化StringIO,可以像讀文件一樣讀取: >>> f=StringIO.StringIO(‘hello\nworld!‘) >>> f.read() ‘hello\nworld!‘ >>> s=StringIO.StringIO(‘hello world!‘) >>> s.seek(5) >>> s.write(‘~‘) >>> s.getvalue() ‘hello~world!‘ 11、logging 幾個主要的類
logging.Logger 應用程序記錄日誌的接口
logging.Filter 過濾哪條日誌不記錄
logging.FileHandler 日誌寫到磁盤文件
logging.Formatter 定義最終日誌格式
import logging format = logging.Formatter(‘%(asctime)s - %(levelname)s %(filename)s [line:%(lineno)d] %(message)s‘) # 普通日誌輸出 info_logger = logging.getLogger(‘info‘) # 創建日誌記錄器 info_logger.setLevel(logging.INFO) # 設置日誌級別,小於INFO的日誌忽略 info_file = logging.FileHandler("info.log") # 日誌記錄到磁盤文件 info_file.setFormatter(format) # 設置日誌格式 info_logger.addHandler(info_file) # 通過handler對象可以把日誌內容寫到不同的地方,python提供了十幾種實用handler,比較常用有: StreamHandler: 輸出到控制臺 FileHandler: 輸出到文件 BaseRotatingHandler: 可以按時間寫入到不同的日誌中。比如將日誌按天寫入不同的日期結尾的文件文件。 SocketHandler: 用TCP網絡連接寫LOG DatagramHandler: 用UDP網絡連接寫LOG SMTPHandler: 把LOG寫成EMAIL郵寄出去 # 錯誤日誌輸出 error_logger = logging.getLogger(‘error‘) error_logger.setLevel(logging.ERROR) error_file = logging.FileHandler("error.log") error_file.setFormatter(format) error_logger.addHandler(error_file) # 輸出控制臺(stdout) console = logging.StreamHandler() console.setLevel(logging.DEBUG) console.setFormatter(format) info_logger.addHandler(console) error_logger.addHandler(console) if __name__ == "__main__": # 寫日誌 info_logger.warning("info message.") error_logger.error("error message!") 輸出結果: # python test.py 2016-07-02 06:52:25,624 - WARNING test.py [line:49] info message. 2016-07-02 06:52:25,631 - ERROR test.py [line:50] error message! # cat info.log 2016-07-02 06:52:25,624 - WARNING test.py [line:49] info message. # cat error.log 2016-07-02 06:52:25,631 - ERROR test.py [line:50] error message! 12、ConfigParser 13、urllib與urllib2 urllib.urlopen()有幾個常用的方法:
方法 描述
getcode() 獲取HTTP狀態碼
geturl() 返回真實URL。有可能URL3xx跳轉,那麽這個將獲得跳轉後的URL
info() 返回服務器返回的header信息。可以通過它的方法獲取相關值
next() 獲取下一行,沒有數據拋出異常
read(size=-1) 默認讀取所有內容。size正整數指定讀取多少字節
readline(size=-1) 默認讀取下一行。size正整數指定讀取多少字節
readlines(sizehint=0) 默認讀取所有內容,以列表形式返回。sizehint正整數指定讀取多少字節
>>> import urllib, urllib2 >>> response = urllib.urlopen("http://www.baidu.com";) # 獲取的網站頁面源碼 >>> response.readline() ‘<!DOCTYPE html>\n‘ >>> response.getcode() 200 >>> response.geturl() ‘http://www.baidu.com‘; 註意:使用read()來讀取網頁內容時,指針會隨著讀取內容位置而變化,如果內容讀完了,在執行response.read()就會返回一個空字符串,目前不知道怎麽使指針清0的方法,一個替代方法是:使用response.close(),這樣就需要重新定義變量,一切重新開始。 14、json 15、time 這個time庫提供了各種操作時間值。
方法 描述 示例
time.asctime([tuple]) 將一個時間元組轉換成一個可讀的24個時間字符串 >>> time.asctime(time.localtime()) ‘Sat Nov 12 01:19:00 2016‘
time.ctime(seconds) 字符串類型返回當前時間 >>> time.ctime() ‘Sat Nov 12 01:19:32 2016‘
time.localtime([seconds]) 默認將當前時間轉換成一個(struct_timetm_year,tm_mon,tm_mday,tm_hour,tm_min, tm_sec,tm_wday,tm_yday,tm_isdst) >>> time.localtime() time.struct_time(tm_year=2016, tm_mon=11, tm_mday=12, tm_hour=1, tm_min=19, tm_sec=56, tm_wday=5, tm_yday=317, tm_isdst=0)
time.mktime(tuple) 將一個struct_time轉換成時間戳 >>> time.mktime(time.localtime()) 1478942416.0
time.sleep(seconds) 延遲執行給定的秒數 >>> time.sleep(1.5)
time.strftime(format[, tuple]) 將元組時間轉換成指定格式。[tuple]不指定默認以當前時間 >>> time.strftime(‘%Y-%m-%d %H:%M:%S‘) ‘2016-11-12 01:20:54‘
time.time() 返回當前時間時間戳 >>> time.time() 1478942466.45977
1) time.localtime >>> time.localtime() time.struct_time(tm_year=2017, tm_mon=9, tm_mday=20, tm_hour=9, tm_min=57, tm_sec=50, tm_wday=2, tm_yday=263, tm_isdst=0) 可以用time.localtime()[x]來取元組裏面的值,[0]就是2017年份,tm_wday是周幾,ubuntu好像周一是用0表示的。 2)time.mktime(tuple):將一個struct_time轉換成時間戳 例子1,把指定的一個日期轉換成時間戳 >>> a="2014-10-10 23:40:30" >>> timearray=time.strptime(a,‘%Y-%m-%d %H:%M:%S‘) # 將其轉換為時間數組,使用strptime()可以轉換成struct_time >>> timearray time.struct_time(tm_year=2014, tm_mon=10, tm_mday=10, tm_hour=23, tm_min=40, tm_sec=30, tm_wday=4, tm_yday=283, tm_isdst=-1) >>> timestap=int(time.mktime(timearray)) #轉換成時間戳 >>> print timestap 1412955630 例子2 >>> time.mktime(time.localtime()) 1505874314.0 時間戳的作用好像是給時間加密,那麽怎麽把時間戳還原呢? 方法1 >>> timestamp=1505874314.0 >>> timearray=time.localtime(timestamp) >>> styletime=time.strftime("%Y-%m-%d %H:%M:%S",timearray) >>> print styletime 2017-09-20 10:25:14 可參考 http://blog.csdn.net/u014595019/article/details/50761763 ,裏面有2個錯誤 1. 時間戳轉換為指定格式日期的方法2,比實際時間差8個小時,utc國際時間的原因吧 2. 獲取當前時間並轉換為指定日期格式,方法1的代碼第5行參數,應該是now 16. datetime datetime庫提供了以下幾個類
描述
datetime.date() 日期,年月日組成
datetime.datetime() 包括日期和時間
datetime.time() 時間,時分秒及微秒組成
datetime.timedelta() 時間間隔
datetime.tzinfo()
datetime.date()類:
方法 描述 描述
date.max 對象所能表示的最大日期 datetime.date(9999, 12, 31)
date.min 對象所能表示的最小日期 datetime.date(1, 1, 1)
date.strftime() 根據datetime自定義時間格式 >>> date.strftime(datetime.now(), ‘%Y-%m-%d %H:%M:%S‘) ‘2016-11-12 07:24:15
date.today() 返回當前系統日期 >>> date.today() datetime.date(2016, 11, 12)
date.isoformat() 返回ISO 8601格式時間(YYYY-MM-DD) >>> date.isoformat(date.today()) ‘2016-11-12‘
date.fromtimestamp() 根據時間戳返回日期 >>> date.fromtimestamp(time.time()) datetime.date(2016, 11, 12)
date.weekday() 根據日期返回星期幾,周一是0,以此類推 >>> date.weekday(date.today()) 5
date.isoweekday() 根據日期返回星期幾,周一是1,以此類推 >>> date.isoweekday(date.today()) 6
date.isocalendar() 根據日期返回日歷(年,第幾周,星期幾) >>> date.isocalendar(date.today()) (2016, 45, 6)
datetime.datetime()類:
方法 描述 示例
datetime.now()/datetime.today() 獲取當前系統時間 >>> datetime.now() datetime.datetime(2016, 11, 12, 7, 39, 35, 106385)
date.isoformat() 返回ISO 8601格式時間 >>> datetime.isoformat(datetime.now()) ‘2016-11-12T07:42:14.250440‘
datetime.date() 返回時間日期對象,年月日 >>> datetime.date(datetime.now()) datetime.date(2016, 11, 12)
datetime.time() 返回時間對象,時分秒 >>> datetime.time(datetime.now()) datetime.time(7, 46, 2, 594397)
datetime.utcnow() UTC時間,比中國時間快8個小時 >>> datetime.utcnow() datetime.datetime(2016, 11, 12, 15, 47, 53, 514210)
datetime.time()類:
方法 描述 示例
time.max 所能表示的最大時間 >>> time.max datetime.time(23, 59, 59, 999999)
time.min 所能表示的最小時間 >>> time.min datetime.time(0, 0)
time.resolution 時間最小單位,1微妙 >>> time.resolution datetime.timedelta(0, 0, 1)
datetime.timedelta()類:
1 2 3 4 5 6 7 8 9 10 # 獲取昨天日期 >>> date.today() - timedelta(days=1) datetime.date(2016, 11, 11) >>> date.isoformat(date.today() - timedelta(days=1)) ‘2016-11-11‘ # 獲取明天日期 >>> date.today() + timedelta(days=1) datetime.date(2016, 11, 13) >>> date.isoformat(date.today() + timedelta(days=1)) ‘2016-11-13‘
幾個練習題。 1.2 用datetime獲取當前的日期,例如:2013-03-29 import datetime print datetime.date.today() 1.3 用datetime返回一個月前的日期:比如今天是2013-3-29 一個月前的話:2013-02-27 解答: >>> now=date.today() >>> print now 2017-09-18 >>> onemonthago=now-datetime.timedelta(days=30) >>> print onemonthago 2017-08-19 拓展 >>> date=datetime.datetime(2013,03,29) - datetime.timedelta(days=30) >>> print date 2013-02-27 00:00:00 >>> time_format=date.strftime(‘%Y%m%d‘) >>> print time_format 20130227 十三. pycharm操作 http://bbs.pythontab.com/thread-4633-1-1.html

python常見命令