1. 程式人生 > >Python中的一些小知識

Python中的一些小知識


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))