python的標准庫:安裝python自帶的庫
1、正則表達式庫 re 使用於文本處理和搜索
匹配:
text = re.compile('abc')
text.match('abc')
正則表達式的主要元字符: . ^ $ * + ? {M} {M,N} [ ] \ \d \D \s () ^$ .*?
. 匹配任意字符
import re
p = re.compile('ca.t')
print(p.match('caat'))
* 前邊的一個字符出現了一次或多次
^ 以什么開頭
$ 以什么結尾 'jpg$' 以jpg結尾的圖片文件
+ 前邊的字符出現了一個或多次
? 前面出現了0次或一次
{} 出現次數 {m,n} 出現次數的范圍值
[] 中括號中只要有一個被匹配到
import re
p = re.compile('c[abc]t')
print(p.match('cat'))
print(p.match('cbt'))
| 字符選擇左面或右面 或的意思
\ 轉義
\d 任意數字出現了多次[0-9]+
\D 非數字
\s 任意字符
() 分組
^$ 匹配空行
.*? 非貪婪匹配 .*貪婪匹配
import re
p = re.compile(r'(\d+)-(\d+)-(\d+)') #r 是把后面的內容原樣輸出,不要轉義
print(p.match('2019-09-08').group(1)) group(1)取出第一部分 groups取出所有部分
#match只用於匹配字符串,如果被匹配的字符串出現了特殊情況,match匹配不到,可以使用
#search進行搜索匹配
p1 = re.compile(r'(\d+)-(\d+)-(\d+)')
print (p1.search('aa2019-09-09uuuu')
phone = '123-456-789 #這是我電話'
p=re.sub(r'#.*$','',phone) #sub 按照正則規則替換某些文本
print(p)
p2 = re.sub(r'\D','',p)
print(p2)
2、處理日期和時間類型數據 time datatime
import datetime
import time
print(datetime.datetime.now())
newtime = datetime.timedelta(minutes=10)
print(datetime.datetime.now()+ newtime)
one_day=datetime.datetime(2019,07,17)
new_date=datetime.timedelta(days=10)
print( one_day + new_date)
print(time.strftime('%Y-%m-%d(%H:%M)'))
2019-07-15 12:17:34.304183
2019-07-15 12:27:34.304238
2019-07-27 00:00:00
2019-07-15(12:17)
3、數字和數學類型的處理math random
random.uniform(1,20) #隨機獲取1到10中一個浮點數
random.randint(1,20) #隨機獲取1到20中的一個整數
random.choice(seq) #隨機獲取seq中的一個元素
random.sample(seq,k) #隨機獲取seq中的K個元素
random.shuffle(list) #打亂list元素順序
4、文件和目錄訪問 pathlib os.path system
import os
print( os.path.abspath('..')) #當前所在根目錄的上級目錄
print( os.path.exists('/Users')) #/User 是否存在該目錄
print( os.path.isdir('/Users')) #是否是目錄
print( os.path.isfile('/User')) #是否是文件
print(os.path.join('/User/wangjianqing/','b/c')) #路徑的拼接
from pathlib import Path
p = Path('..') #把點封裝成p
print (list(x for x in p.iterdir() if x.is_dir())) #查看當前上級有哪些目錄,並列舉
print ( p.resolve()) #查看當前目錄
p.is_dir()
q = Path('/wangjianqing/a/b/c')
Path.mkdir(q,parents=True) #新建一個目錄 目錄中間不存在的部分會被自動創建
import os
print(os.listdir()) #返回指定目錄下的所有文件和文件名,不包括字目錄。
print(os.getcwd()) #放回當前python中正在工作的目錄
print(os.stat('./hanshu.py')) #獲取文件屬性,文件大小,創建時間,最后訪問時間
os.removedirs("/XXX/XXX") #刪除多個目錄
os.system() #運行shell命令
os.path.join(path,name) #鏈接目錄與文件名或目錄 兼容win和linux os.seq 分隔符不一樣
os.mkdir(name) #創建目錄
os.path.basename(path) #返回文件名 如果傳如路徑沒有文件存在 返回為空
os.path.exists("") #判斷某文件存不存在
os.path.isfile("") #判斷是不是文件
import sys
print(sys.path) #返回當前PYTHONPATH的列表
print(sys.argv) #返回當前命令行參數
print(sys.exit) # 退出當前python進程
print(sys.platform) #獲取當前系統平台
print(sys.stdin) #標准輸入流
print(sys.stdout) #標准輸出流
print(sys.stderr) #標准錯誤輸出
5、數據壓縮和歸檔 tarfile
6、通用操作 logging argparse
logging參考文章: https://cuiqingcai.com/6080.html
logging.basicConfig(level=logging.DEBUG,
filename='output.log',
datefmt='%Y/%m/%d %H:%M:%S',
format='%(asctime)s - %(name)s - %(levelname)s - %(lineno)d - %(module)s - %(message)s')
logger = logging.getLogger(__name__)
logger.info('This is a log info')
logger.debug('Debugging')
logger.warning('Warning exists')
logger.info('Finish')
7、多線程 threading queue
8、Internet 數據處理的base64 urllib
9、結構化標記處理工具 html xml
10、開發工具的 unitest
11、調試工具timeit
12、軟件包發布 venv
13、MysqlDB pymysql
import numpy as np
import pandas as pd
from pandas import DataFrame,Series
import pymysql
import pymysql.cursors
#---------------------數據連接---------------------------#
def connection(database_key):
mysql = {'host': '', 'port': 3306, 'user': 'root', 'passwd': '', 'db': '', 'charset': 'utf8'}
if database_key == 'test':
mysql['host'] = 'localhost'
mysql['passwd'] = '123456'
mysql['db'] = 'mytest'
return mysql
# 創建連接
conn = pymysql.connect(**connection('test'))
# 創建游標
cursor = conn.cursor()
# 執行SQL,並返回收影響行數
effect_row = cursor.execute("select * from user3")
print(cursor.fetchone())
# 執行SQL,並返回受影響行數
effect_row = cursor.execute("update user3 set name='ss' where symbol = 2")
print(effect_row)
# 執行SQL,並返回受影響行數,執行多次
effect_row = cursor.executemany("insert into user3(symbol,name) values(%s,%s)", [(20,"kloh"),(40,'bolo')])
print(effect_row)
#提交,不然無法保存新建或者修改的數據
conn.commit()
# 關閉游標
cursor.close()
# 關閉連接
conn.close()
14、shutil
是一種高層次的文件操作工具, 代替一些shell命令
類似於高級API,而且主要強大之處在於其對文件的復制與刪除操作更好的支持。
import shutil
# 將文件內容拷貝到另一個文件中
shutil.copyfileobj(open('old.txt', 'r'), open('new.txt', 'w'))
# 拷貝文件
shutil.copyfile('old.txt', 'old1.txt')
# 僅拷貝權限。內容、組、用戶均不變
shutil.copymode('old.txt', 'old1.txt')
# 復制權限、最后訪問時間、最后修改時間
shutil.copystat('old.txt', 'old1.txt')
# 復制一個文件到一個文件或一個目錄
shutil.copy('old.txt', 'old2.txt')
# 在copy上的基礎上再復制文件最后訪問時間與修改時間也復制過來了
shutil.copy2('old.txt', 'old2.txt')
# 把olddir拷貝一份newdir,如果第3個參數是True,則復制目錄時將保持文件夾下的符號連接,如果第3個參數是False,則將在復制的目錄下生成物理副本來替代符號連接
shutil.copytree('C:/Users/xiaoxinsoso/Desktop/aaa', 'C:/Users/xiaoxinsoso/Desktop/bbb')
# 移動目錄或文件
shutil.move('C:/Users/xiaoxinsoso/Desktop/aaa', 'C:/Users/xiaoxinsoso/Desktop/bbb') # 把aaa目錄移動到bbb目錄下
# 刪除一個目錄
shutil.rmtree('C:/Users/xiaoxinsoso/Desktop/bbb') # 刪除bbb目錄
#打包壓縮文件
shutil.make_archive(base_name,format)15、json庫
import json
json.load() #將json字符串轉化成python對象
json.dumps() #將python對象轉化成json字符串
16、python3. subporcess 子進程管理模塊
subporcess 模塊允許你產生新的進程,並且可以把輸入,輸出, 錯誤 直接連接到管道,最后獲取結果,python也有倆個比較功能不是那么太全的內置模塊<os.system, os.spawn..>等這些,總之這家伙的出現就是代替那些的
17、ConfigParser模塊
用來解析類似.ini的文件
[tomcat_server]
Ip_address:192.168.22.10
account:testerhome
password:123456
Config實例常用方法
config.get("Section","options"):獲取指定section下對應的options值
config.sections() 獲取配置文件中的sections
config.has_section('section') 判斷配置文件中是否有對應的section
config.has_option('section','option'):判斷對應的section是否有對應的option
18、Requests庫