02 輔助函式二

2022-05-18 14:36:40 字數 4759 閱讀 4466

檢測郵箱是否合法

1

defcheck_email(email):

2import

re3 res = re.match(r'

^[0-9a-za-z\_\-]+(\.[0-9a-za-z\_\-]+)*@[0-9a-za-z]+(\.[0-9a-za-z]+)$

',email)

4return true if res else false

檢測手機號碼是否合法

1

defcheck_phone(phone):

2import

re3 res = re.match(r'

^1[34578]\d$

',phone)

4return true if res else false

判斷手機是安卓系統還是蘋果系統或者是pc端

1

defcheck_mobile_model(raw):

2importre3

try:

4 model = re.search('

android

', raw)5if

notmodel:

6 model = re.search('

iphone

', raw)

7return

model.group()

8except:9

return'pc

'

根據ip獲取地理位置

1

deffind_ip(ip):

2try:3

import

geoip2.database

4 reader = geoip2.database.reader('')

5 info =reader.city(ip)

6reader.close()

7return info.country.names['

zh-cn']

8except

exception as e:

9print

(e)10

return'未知

'

檢測url是否合法

1

defcheck_url(url):

2import

re3 res = re.match(r'

^[a-za-z]+://[^\s]*$

',url)

4return true if res else false

獲取當前格式化時間

1

defget_current_time():

2from datetime import

datetime

3return datetime.now().strftime('

%y-%m-%d %h:%m:%s

')

獲取n天前時間

1

def getbeforendays(n=0):

2from datetime import

datetime, timedelta

3return (datetime.now()-timedelta(days=n)).strftime('

%y-%m-%d %h:%m:%s

')

獲取客戶端ip

1

defget_remote_ip():

2import

socket

3 ip =socket.gethostbyname(socket.gethostname())

4return ip

獲取客戶端地理位置

安裝擴充套件pip install geoip2

1

deffind_position_by_ip(ip):

2try:3

import

geoip2.database

4 reader = geoip2.database.reader('

path/geolite2-city.mmdb')

5 info =reader.city(ip)

6 data =

12reader.close()

13except

:14 data ={}

15return data

獲取客戶端ua資訊

#

從http 協議 headers 中 獲取 user-agent 配置

判斷目錄是否存在,若不存在則建立

1

defis_dir_exists(path):

2importos3

ifnot

os.path.exists(path):

4 os.makedirs(path)

檔案生成檔名並上傳

1

defupload(file):

2from datetime import

datetime

3import

random4#

指定儲存路徑,如不存在需要建立

5 path = '

path/'6

#獲取檔案的字尾名

7try

:8 ext = '

.' + file.filename.rsplit('

,',1)[1]

9except

:10 ext = '

.png'11

#組裝新的檔名,生成格式 日時分秒 + 五位隨機數 + 字尾

12 filename = datetime.now().strftime('

%d%h%m%s

')+'

-'+str(random.randint(10000,99999))

13 file_upload_path = path +filename

14 with open(file_upload_path,'wb'

) as fp:

15fp.write(file.read()) 16#

返回檔名

17return filename

無限極分類

#

資料來源'''

[ ,

, ,

, ,

, ,

, ,

, , , ]

'''

1

#實現**

2def get_infinite_level(data,pid=0,deep=0):

3 tree =

4for row in

data:

5if row['

pid'] ==pid:

6 row['

deep

'] =deep

7 row['

child

'] = get_infinite_level(data,row['

id'],deep+1)89

return tree

#

實現結果

[, ]

}]}, , ]

}, ]

}]}, ]

}, ]

'''

獲取樹狀結構

#

資料來源'''

[ ,

, ,

, ,

, ,

, ,

, ,

, ]'''

1

#實現**

2def get_tree_struct(data,pid=0,level=0):

3 data_list =

4for info in

data:

5if info['

pid'] ==pid:

6 info['

level

'] =level

7 info['

name

'] = '

^-^

'*level + info['

name']

89 data_list += get_tree_struct(data, info['

id'], level + 1)

10return data_list

'''

[, , , , , , , , , , , , ]

'''

STL vector 輔助函式

template inline bool operator const vector tp,alloc x,const vector tp,alloc y 判斷相等 template inline bool operator const vector tp,alloc x,const vector ...

oracle輔助函式

oracle 輔助函式 1 decode exp,s1,r1,s2,r2.s,r def 可以把它理解成乙個增強型的if else,只不過它並不通過多行語句,而是在乙個函式內實現if else的功能。exp做為初始引數。s做為對比值,相同則返回r,如果s有多個,則持續遍歷所有s,直到某個條件為真為止...

遊戲輔助函式

游標的控制 移動游標到指定位置 移動游標到指定位置 void gotoxy int x,int y 隱藏游標 隱藏游標 void hide 第乙個指游標高度 1 100 第二個指是否可見光標 0 1 setconsolecursorinfo hout,cursor info 設定控制台游標大小和可見...