日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 常用模块函数_python函数和常用模块(三),Day5

發布時間:2024/9/27 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 常用模块函数_python函数和常用模块(三),Day5 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遞歸

反射

os模塊

sys模塊

hashlib加密模塊

正則表達式

反射

python中的反射功能是由以下四個內置函數提供:hasattr、getattr、setattr、delattr,改四個函數分別用于對對象內部執行:檢查是否含有某成員、獲取成員、設置成員、刪除成員。

class Foo(object):

def __init__(self):

self.name = 'wupeiqi'

def func(self):

return 'func'

obj = Foo()

# #### 檢查是否含有成員 ####

hasattr(obj, 'name')

hasattr(obj, 'func')

# #### 獲取成員 ####

getattr(obj, 'name')

getattr(obj, 'func')

# #### 設置成員 ####

setattr(obj, 'age', 18)

setattr(obj, 'show', lambda num: num + 1)

# #### 刪除成員 ####

delattr(obj, 'name')

delattr(obj, 'func')

os模塊

os.getcwd() # 獲取當前工作目錄,即當前python腳本工作的目錄路徑

os.chdir("dirname") # 改變當前腳本工作目錄;相當于shell下cd

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

os.pardir # 獲取當前目錄的父目錄字符串名:('..')

os.makedirs('dir1/dir2') # 可生成多層遞歸目錄

os.removedirs('dirname1') # 若目錄為空,則刪除,并遞歸到上一級目錄,如若也為空,則刪除,依此類推

os.mkdir('dirname') # 生成單級目錄;相當于shell中mkdir dirname

os.rmdir('dirname') # 刪除單級空目錄,若目錄不為空則無法刪除,報錯;相當于shell中rmdir dirname

os.listdir('dirname') # 列出指定目錄下的所有文件和子目錄,包括隱藏文件,并以列表方式打印

os.remove() # 刪除一個文件

os.rename("oldname","new") # 重命名文件/目錄

os.stat('path/filename') # 獲取文件/目錄信息

os.sep # 操作系統特定的路徑分隔符,win下為"\\",Linux下為"/"

os.linesep # 當前平臺使用的行終止符,win下為"\t\n",Linux下為"\n"

os.pathsep # 用于分割文件路徑的字符串

os.name # 字符串指示當前使用平臺。win->'nt'; Linux->'posix'

os.system("bash command") # 運行shell命令,直接顯示

os.environ # 獲取系統環境變量

os.path.abspath(path) # 返回path規范化的絕對路徑

os.path.split(path) # 將path分割成目錄和文件名二元組返回

os.path.dirname(path) # 返回path的目錄。其實就是os.path.split(path)的第一個元素

os.path.basename(path) # 返回path最后的文件名。如何path以/或\結尾,那么就會返回空值。即os.path.split(path)的第二個元素

os.path.exists(path) # 如果path存在,返回True;如果path不存在,返回False

os.path.isabs(path) # 如果path是絕對路徑,返回True

os.path.isfile(path) # 如果path是一個存在的文件,返回True。否則返回False

os.path.isdir(path) # 如果path是一個存在的目錄,則返回True。否則返回False

os.path.join(path1[, path2[, ...]]) # 將多個路徑組合后返回,第一個絕對路徑之前的參數將被忽略

os.path.getatime(path) # 返回path所指向的文件或者目錄的最后存取時間

os.path.getmtime(path) # 返回path所指向的文件或者目錄的最后修改時間

sys模塊

sys.argv # 命令行參數List,第一個元素是程序本身路徑

sys.exit(n) # 退出程序,正常退出時exit(0)

sys.version # 獲取Python程序的版本信息

sys.maxint # 最大的Int值

sys.path # 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值

sys.platform # 返回操作系統平臺的名稱

sys.stdin # 輸入相關

sys.stdout # 輸出相關

sys.stderror # 錯誤相關

hashlib加密模塊

用于加密相關的操作,代替了md5模塊和sha模塊,主要提供?SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法

import hashlib

# ######## md5 ########

hash = hashlib.md5()

hash.update('admin')

print hash.hexdigest()

# ######## sha1 ########

hash = hashlib.sha1()

hash.update('admin')

print hash.hexdigest()

# ######## sha256 ########

hash = hashlib.sha256()

hash.update('admin')

print hash.hexdigest()

# ######## sha384 ########

hash = hashlib.sha384()

hash.update('admin')

print hash.hexdigest()

# ######## sha512 ########

hash = hashlib.sha512()

hash.update('admin')

print hash.hexdigest()

以上加密算法雖然依然非常厲害,但時候存在缺陷,即:通過撞庫可以反解。所以,有必要對加密算法中添加自定義key再來做加密。

import hashlib

# ######## md5 ########

hash = hashlib.md5('898oaFs09f')

hash.update('admin')

print hash.hexdigest()

還不夠吊?python 還有一個 hmac 模塊,它內部對我們創建 key 和 內容 再進行處理然后再加密

import hmac

h = hmac.new('wueiqi')

h.update('hellowo')

print h.hexdigest()

不能再牛逼了!!!

import hashlib

obj = hashlib.md5()

obj.update(bytes('admin', encoding='utf-8'))

result = obj.hexdigest()

print(result)

# 加key密鑰

obj = hashlib.md5(bytes('xxxxxxxx', encoding='utf-8'))

obj.update(bytes('admin', encoding='utf-8'))

result = obj.hexdigest()

print(result)

正則表達式

re模塊用于對python的正則表達式的操作。

字符:

. 匹配除換行符以外的任意字符

\w匹配字母或數字或下劃線或漢字

\s匹配任意的空白符

\d匹配數字

\b匹配單詞的開始或結束

^匹配字符串的開始

$匹配字符串的結束

次數:

* 重復零次或更多次

+重復一次或更多次

?重復零次或一次

{n}重復n次

{n,}重復n次或更多次

{n,m}重復n到m次

IP:^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$

手機號:^1[3|4|5|8][0-9]\d{8}$

1、match(pattern, string, flags=0)

從起始位置開始根據模型去字符串中匹配指定內容,匹配單個

正則表達式

要匹配的字符串

標志位,用于控制正則表達式的匹配方式

importre

obj= re.match('\d+', '123uuasf')ifobj:print obj.group()

2、search(pattern, string, flags=0)

根據模型去字符串中匹配指定內容,匹配單個

importre

obj= re.search('\d+', 'u123uu888asf')ifobj:print obj.group()

3、group和groups

a = "123abc456"

print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group()print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(0)print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(1)print re.search("([0-9]*)([a-z]*)([0-9]*)", a).group(2)print re.search("([0-9]*)([a-z]*)([0-9]*)", a).groups()

4、findall(pattern, string, flags=0)

上述兩中方式均用于匹配單值,即:只能匹配字符串中的一個,如果想要匹配到字符串中所有符合條件的元素,則需要使用?findall。

importre

obj= re.findall('\d+', 'fa123uu888asf')print obj

5、sub(pattern, repl, string, count=0, flags=0)

用于替換匹配的字符串

content = "123abc456"new_content= re.sub('\d+', 'sb', content)#new_content = re.sub('\d+', 'sb', content, 1)

print new_content

相比于str.replace功能更加強大

6、split(pattern, string, maxsplit=0, flags=0)

根據指定匹配進行分組

content = "'1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'"new_content= re.split('\*', content)#new_content = re.split('\*', content, 1)

print new_content

content = "'1 - 2 * ((60-30+1*(9-2*5/3+7/3*99/4*2998+10*568/14))-(-4*3)/(16-3*2) )'"new_content= re.split('[\+\-\*\/]+', content)#new_content = re.split('\*', content, 1)

print new_content

inpp = '1-2*((60-30 +(-40-5)*(9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2))'inpp= re.sub('\s*','',inpp)

new_content= re.split('\(([\+\-\*\/]?\d+[\+\-\*\/]?\d+){1}\)', inpp, 1)print new_content

相比于str.split更加強大

總結

以上是生活随笔為你收集整理的python 常用模块函数_python函数和常用模块(三),Day5的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。