Python中的一些小知識
阿新 • • 發佈:2018-12-15
1.時間處理
import time # time.struct_time結構體 time1 = time.localtime() print(time1) # 從1970年到現在的秒數 time2 = time.time() print(time2) # 從1970年開始往後指定的秒數 time3 = time.localtime(1531274000) print(time3) result = time.strftime('%y %m %d %H %M %S',time.localtime()) print(result) # 執行緒休眠 # 爬蟲:獲取對方資料太快,有可能被認為是爬蟲程式,所以在爬蟲中有時候需要減緩速度 # 執行緒:a程式碼塊的執行受B程式碼影響,必須確保B程式碼先執行並返回資料,這時候就可以讓A程式碼休眠一段時間 # (注意:休眠不是必須的,也不是最好的) # 定時任務:需要程式碼到指定時間是,去執行某個任務,當時間還未到達,可以讓程式先休眠 # time.sleep(5) print('今天是週三,一星期馬上過去一半了') # info = {"code":200,"msg":"成功!","data":[{"createdAt":"2017-11-23T08:32:29.546Z","publishedAt":"2017-11-24T11:08:03.624Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171123083218_5mhRLg_sakura.gun_23_11_2017_8_32_9_312.jpeg"},{"createdAt":"2017-11-20T07:49:41.797Z","publishedAt":"2017-11-20T12:42:06.454Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171120074925_ZXDh6l_joanne_722_20_11_2017_7_49_16_336.jpeg"},{"createdAt":"2017-11-17T10:31:41.155Z","publishedAt":"2017-11-17T12:39:48.189Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/2017-11-17-22794158_128707347832045_9158114204975104000_n.jpg"},{"createdAt":"2017-11-16T11:57:11.4Z","publishedAt":"2017-11-16T12:01:05.619Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171116115656_vnsrab_Screenshot.jpeg"},{"createdAt":"2017-11-14T10:13:21.137Z","publishedAt":"2017-11-14T10:43:36.180Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171114101305_NIAzCK_rakukoo_14_11_2017_10_12_58_703.jpeg"},{"createdAt":"2017-11-13T08:42:35.306Z","publishedAt":"2017-11-13T12:10:58.643Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171113084220_LuJgqv_sakura.gun_13_11_2017_8_42_12_311.jpeg"},{"createdAt":"2017-11-09T09:53:06.802Z","publishedAt":"2017-11-10T08:10:02.838Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171109095254_dOw5qh_bluenamchu_9_11_2017_9_52_47_256.jpeg"},{"createdAt":"2017-11-07T10:02:58.73Z","publishedAt":"2017-11-08T11:00:50.559Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171107100244_0fbENB_yyannwong_7_11_2017_10_2_5_982.jpeg"},{"createdAt":"2017-11-02T09:23:05.497Z","publishedAt":"2017-11-06T12:40:39.976Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171102092251_AY0l4b_alrisaa_2_11_2017_9_22_44_335.jpeg"},{"createdAt":"2017-11-01T14:18:52.937Z","publishedAt":"2017-11-01T14:20:59.209Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171101141835_yQYTXc_enakorin_1_11_2017_14_16_45_351.jpeg"},{"createdAt":"2017-10-31T10:56:55.988Z","publishedAt":"2017-10-31T12:25:55.217Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/2017-10-31-nozomisasaki_official_31_10_2017_10_49_17_24.jpg"},{"createdAt":"2017-10-27T11:40:43.793Z","publishedAt":"2017-10-27T12:02:30.376Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171027114026_v8VFwP_joanne_722_27_10_2017_11_40_17_370.jpeg"},{"createdAt":"2017-10-25T11:30:18.697Z","publishedAt":"2017-10-25T11:39:10.950Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171025112955_lmesMu_katyteiko_25_10_2017_11_29_43_270.jpeg"},{"createdAt":"2017-10-24T08:35:43.61Z","publishedAt":"2017-10-24T11:50:49.1Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171024083526_Hq4gO6_bluenamchu_24_10_2017_8_34_28_246.jpeg"},{"createdAt":"2017-10-23T12:31:32.639Z","publishedAt":"2017-10-23T12:44:23.660Z","type":"美圖","url":"https://img.gank.io/anri.kumaki_23_10_2017_12_27_30_151.jpg"},{"createdAt":"2017-10-18T09:14:07.966Z","publishedAt":"2017-10-20T10:26:24.673Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171018091347_Z81Beh_nini.nicky_18_10_2017_9_13_35_727.jpeg"},{"createdAt":"2017-10-12T07:32:28.644Z","publishedAt":"2017-10-17T13:10:43.731Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171012073213_p4H630_joycechu_syc_12_10_2017_7_32_7_433.jpeg"},{"createdAt":"2017-10-12T07:31:27.363Z","publishedAt":"2017-10-16T12:19:20.311Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171012073108_0y12KR_anri.kumaki_12_10_2017_7_30_58_141.jpeg"},{"createdAt":"2017-10-11T08:49:21.485Z","publishedAt":"2017-10-11T12:40:42.545Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/20171011084856_0YQ0jN_joanne_722_11_10_2017_8_39_5_505.jpeg"},{"createdAt":"2017-10-10T12:38:25.180Z","publishedAt":"2017-10-10T12:41:34.882Z","type":"美圖","url":"http://7xi8d6.com1.z0.glb.clouddn.com/2017-10-10-sakura.gun_10_10_2017_12_33_34_751.jpg"}]} # for迴圈中 每次從被迴圈的物件中(info['data']) # 取出一條資料 (dic) # 被迴圈的物件有多少條資料(info['data']) # 就迴圈多少次 # for dic in info['data']: # print(dic['url']) import datetime # data 資料 # date 日期 # 獲取現在的日期和時間 date1 = datetime.datetime.now() print(date1) date2 = date1.strftime('%Y/%m/%d %H:%M:%S') print(date2) date2 = date1.strftime('%Y year %m month %d day %H hour %M minute %S second') print(date2) date2 = date1.strftime('%Yyear%mmonth%dday') # UnicodeEncodeError: 'locale' codec can't encode character # '\u5e74' in position 2: Illegal byte sequence # 編碼錯誤:本地檔案不能對指定位置的字元進行編碼 date2 = date2.replace('year','年').replace('month','月').replace('day','日') print(date2) # 怎麼獲取今天往後推一天的時間 # 可以用來計算過期時間 date4 = datetime.timedelta(days= 1 , hours=12) date5 = datetime.datetime.now() + date4 print(date5) date6 = datetime.datetime.now() # TypeError: Required argument 'year' (pos 1) not found date7 = date6.date() print(date7.year , date7.month , date7.day) date8 = date6.time() print(date8) date9 = datetime.datetime.now() # stamp郵戳 # timestamp 時間戳 時間線 print(date9.timestamp())
2.os.操作
import os # os operation system # mas os # ios iphone os # os 可以獲取本機的基本資訊以及 可以對檔案及資料夾進行相關操作 # nt 代表windows作業系統 # posix 代表linux作業系統 name=os.name print(name) # 獲取cpu核數 cpu_count=os.cpu_count() print(cpu_count) # 判斷是否存在某個檔案 # path 路徑 exists 存在 # 如果不寫路徑地址 直接寫檔名字那麼 預設使用的是相對路徑 result=os.path.exists('3.os操作.py') print(result) # 絕對路徑 result=os.path.exists('C:/Users/Administrator/Desktop/Python資料/7/3.os操作.py') print(result) # C:\Users\Administrator\Desktop\Python資料\7 #獲取絕對路徑 result=os.getcwd() print(result) # abs absolute絕對的 result=os.path.abspath('.') print(result) # 獲取當前路徑的父級路徑 result=os.path.abspath('..') print(result) # 獲取整個地址當中的最後一部分 result=os.path.basename('http://www.baidu.com/music/prettyboy.mp3') print(result) result=os.path.basename('C:/Users/Administrator/Desktop/Python資料/7/3.os操作.py') print(result) # 地址路徑會被/分割成幾部分 result=os.path.commonpath(['http://www.jd.com', 'http://www.taobao.com', 'http://www.baisu.com']) print(result) # 返回檔案所在的資料夾 # 文件:返回一個資料夾的共有路徑 # result=os.path.dirname('1.作業.py') # print(result) # 資料夾資訊處理---------------------- import time # get 得到 c change / create # 獲取資料夾的建立時間 result=os.path.getctime('C:/Users/Administrator/Desktop/合同') print(result) # a access 訪問時間 result=os.path.getatime('C:/Users/Administrator/Desktop/合同') print(time.localtime(result)) # modify 修改 result=os.path.getmtime('C:/Users/Administrator/Desktop/合同') print(time.localtime(result)) # getsize 獲取檔案大小 獲取的大小為位元組大小 # size 大小 #KB #1TB=1024GB #1G=1024M #1M=1024K #1K=1024B # 1B=8b result=os.path.getsize('C:/Users/Administrator/Desktop/合同') print(result/1024) # is 是否 result=os.path.isfile('C:/Users/Administrator/Desktop/Python資料/7/3.os操作.py') print(result) # split 分割/ # 返回一個元組 由路徑和最後的檔名字兩部分組成 result=os.path.split('C:/Users/Administrator/Desktop/Python資料/7/3.os操作.py') print(result) # splitext # 返回一個元組 由全部路徑和最後的檔案字尾兩部分組成 result=os.path.splitext('C:/Users/Administrator/Desktop/Python資料/7/3.os操作.py') print(result) if os.path.exists('python'): os.removedirs('python') else: os.mkdir('python') if os.path.exists('測試.txt'): os.rename('測試.txt','釋出.txt') # 檔案讀寫操作 # 值1:寫入的檔案,如果有這個檔案 就直接寫入,沒有這個檔案就建立 # 值2:對檔案操作的方式 w 表示 write 寫入 # 值3:檔案的編碼方式,utf-8方式亂碼出現 # f=open('python.txt','w',encoding='utf-8') # f.write('今天是週三,7月11日,距離畢業還有120天\n') # # 當檔案關閉以後,不能對檔案進行任何操作 # f.write('明天是週四,後天是週五,大後天是自習,然後就休息\n') # f.close() # # append 追加 f=open('python.txt','a',encoding='utf-8') f.write('新來的內容') f.close() f=open('python.txt','r',encoding='utf-8') # readlines 將所有的資料放入到一個數組當中 # f.read 將所有的資料放入一個字串當中 result=f.readlines() print(result) f.close()
3.異常處理
# 異常處理:提前將可能引起錯誤的程式碼放入到異常塊當中 # 一旦發生錯誤,不會影響後續程式碼的執行 # list=[1,2,3,4,5,6] # print(list[100]) # dic={'name':'張三'} # print(dic['age']) # try 嘗試 試圖 try: list = [1, 2, 3, 4, 5, 6] print(list[100]) dic = {'name': '張三'} # print(dic['age']) except KeyError as e: print('捕獲了一個key值錯誤,請仔細檢查key值') except IndexError as e: print('捕獲了一個索引值錯誤,索引值超出界限') try: list=[1,2,3,4] print(list[100]) dic={'name','as'} print(dic['age']) #捕獲任意錯誤 好處是不需要遍歷所有的錯誤型別 # 缺點是:不知道錯誤是什麼型別 except Exception as e: print('捕獲了一個錯誤') # 有可能錯誤的程式碼塊 try: list=[1,23,6] # 捕獲了錯誤的程式碼塊 except Exception as e: print('捕獲了一個錯誤') # 程式碼沒有產生錯誤的程式碼塊 else: print('沒有錯誤') # 不過有沒有錯誤 一定會進來的程式碼塊 finally 最終的 finally: print('程式結束')
4.函式
# 函式就是方法 非常類似於現實生活中的模板/模具
# 宣告方法 def define 定義 test方法名稱 ()內部寫引數
def test():
pass
# 無引數無返回值
def firstFun():
print('this is my first function')
firstFun()
# 有引數無返回值 宣告方法時候的引數叫做形式引數,簡稱形參
# 形參沒有具體的值 本身為一個變數
def secondFun(values):
print('我喜歡{}'.format(values))
# 呼叫方法時候的引數 叫做實際引數 簡稱實參
# 實際不是變數 而是具體的值
secondFun('吃飯')
# 無引數有返回值
def thirdFun():
love='愛學習'
return love
result=thirdFun()
print(result)
def fourFun():
print('hello')
#return 後面如果沒有跟值的話 預設返回None
# return 只能寫在方法裡面 不能在方法外面使用
# 程式碼執行了return以後 return到方法結束之前
# 的部分 統統不執行
return
for x in range(10):
break
continue
print('world')
fourFun()
print('nice')
# 區域性變數和全域性變數-----------------------------------------
list=[]
dic={}
name='rgsf '
age=0
fond='1236646'
def partFun():
# 在方法內部宣告的變數叫做區域性變數
# 只能在方法內部使用
# 出了這個方法變數就釋放了
global fond
fond='學習'
print(fond)
print(name)
partFun()
print(name)
print(fond)
# 有引數有返回值
def fiveFun(a,b):
return a+b
print(fiveFun(12,15))
# 有多參有返回值
# def sixFun(a,b,c,d,e,f,g):
# print(a)
# print(b)
# sixFun('a',0,[1,2,3,4,5,6,7],True,{'name':'張三'},(1,2,3))
#
# 預設引數
def myGirlFriend(name,age,sex=True,born='未知'):
print('我的女朋友是{},年齡是{},性別是{},出生日期是{}'.format(name,age,sex,born))
myGirlFriend('小玲',100)
myGirlFriend('小王',100,True,'1918年')
myGirlFriend('小黃',100,True)
# 關鍵引數
def myBoyFriend(name,age,sex=False,born='未知'):
print('我的男朋友是{},年齡是{},性別是{},出生日期是{}'.format(name,age,sex,born))
myBoyFriend('校長',100)
# 指明給哪一個引數設定值,這種引數叫做關鍵引數
myBoyFriend('小張',100,born='2000年1月1日')
# *args引數
# argument 引數 **指標的指標
# *args能夠將多餘的引數統統放入到自己內部
def myArgu(name,*args):
print(name)
print(args)
myArgu('張三丰',149,'武當創始人','太極劍,太極拳')
def retManyValue(a,b,c):
return a,b,c
print(retManyValue(10,11,12))