1. 程式人生 > >Python隨心記--模組

Python隨心記--模組

time時間模組方法
import time
    time.time()   #時間戳
    time.localtime()   #結構化時間 也可以時間戳轉為結構化時間
        t = time.localtime()
        print(t.tm_year)
        print(t.tm_wday)
    time.gmtime()
    time.mktime(time.localtime())   #把結構化時間轉為時間戳
    time.strftime('%Y-%m-%d %X',time.localtime())   #將結構化時間轉為字串時間  
time.strptime('2018:12:18:22:11:11','%Y:%m:%d:%X') #將字串時間轉為結構化時間 time.asctime() time.ctime() time.sleep()
datetime時間模組方法
import.datetime
    datetime.datetime.now()
random隨機模組
import random
    random.random()
    random.randint(1,6)   #指1-6範圍內的數 
    random.randrange(1,6)
    random.choice([
11,22,33,44,55,66,77]) random.sample([11,22,33,44,55,66,77],2) #隨機取兩個 random.uniform(1,5) #隨機浮點數 random.shuffle([1,2,3,4,5,6]) #打亂列表順序 #驗證碼 import random def v_code(): ret = '' for i in range(6): num = random.randint(0,9) alf = chr(random.randint(65,122)) #
字母的ascall ret += str(random.choice([num,alf])) return ret print(v_code())
 
BASEDIR介紹
__file__   #列印當前執行的路徑
import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))   #拿到上級目錄
sys.path.append(BASE_DIR)   #檔案新增執行路勁
os模組
import os
    os.getcwd()   #獲取當前工作目錄
    os.path()
    os.chdir()   #改變當前工作目錄
    os.curdir()   #返回當前目錄
    os.pardir()   #獲取當前目錄的父級目錄字串名
    os.makedirs()   #生成多層遞迴資料夾
    os.removedirs()   #刪除並遞迴到上一層(有內容不刪)
    os.mkdir()   #生成單層資料夾
    os.rmdir()   #生成單層資料夾(有內容不刪)
    os.listdir()   #列出檔案目錄
    os.remove()   #刪除檔案
    os.rename()   #改名
    os.stat()   #獲取檔案資訊
    os.sep()   #輸出作業系統特定的路徑分隔符
    os.linesep()   #輸出當前平臺使用的行終止符
    os.pathsep()   #輸出用於分割檔案路徑的字串
    os.name()   #輸出字串只是當前使用平臺
    os.system   #執行shell命令
    os.environ   #獲取系統環境變數
    os.paht.abspath()   #返回path規範化的絕對值
    os.path.split(path)   #將path分割成目錄和檔名二元組返回
    os.path.dirname(path)   
    os.path.basename(path)   #返回path最後檔名
    os.path.exists(path)    #如果path存在返回True
    os.isabs(path)   #如果path是絕對路徑,但會True
    os.isfile(path)   #如果path是一個存在的 檔案返回True
    os.path.isdir(path)   #如果是一個存在目錄返回True
    os.path.join(path)   #將多個路徑組合拼接並返回
    os.path.getatime()   #返回目錄最後一次存取時間
    os.path.getmtime()   #返回目錄最後一次修改時間
sys模組
 
 
 
import sys
    sys.exit(n)   #退出程式
    sys.argv   #命令列引數list
    sys.maxint   #最大int值
    sys.path   #返回模組的手速路徑
    sys.platform   #返回作業系統平臺名稱

 
 
 
#進度條
import time
import sys
for i in range(10):
    sys.stdout.write('#')
    time.sleep(1)
    sys.stdout.flush()
json & pickle模組
import json
    json.dumps(dic)
        dic={'name':'aa',}
        print(json.dumps(dic))
    json.loads(dic)
shelve模組
import shelve
    shelve.open(r'shelve')   #將一個字典寫入檔案
xml模組
import xml.etree.ElementTree as ET
tree = ET.parse('xml_lesson')   #解析xml檔案,得到tree物件
root = tree.getroot()
print(root.tag)   #root.tag  列印標籤
for i in root:
    # print(i.tag)
    for j in i:
        # print(j.attrib)
        print(j.text)   #取標籤的文字內容

for i in root.iter('year'):
    print(i.tag,i.text)

#修改
for i in root.iter('year'):
    new_year = int(i.text)+1
    i.text = str(new_year)
    i.set('update','year')
tree.write('xml_lesson')   #把修改的內容寫入原檔案

#刪除
for i in root.findall('country'):
    rank = int(i.find('rank').text)
    if rank > 50:
        root.remove(i)
tree.write('xml_lesson')   #把修改的內容寫入原檔案

#建立xml資料
new_xml = ET.Element('namelist')   #建立根節點
name = ET.SubElement(new_xml,'name',attrib={'enumerate':'year'})
age = ET.SubElement(new_xml,'age',attrib={'checkend':'no'})
sex = ET.SubElement(new_xml,'sex')
sex.text = '23'

name2 = ET.SubElement(new_xml,'name',attrib={'enumerate':'year'})
age = ET.SubElement(name2,'age')
age.text = '12'
et = ET.ElementTree(new_xml)   #生成文件物件
et.write('test.xml',encoding='utf-8')
 
re正則模組
import re
    ret = re.findall('a...n','helloalvin')   # .萬用字元 匹配已a開頭n結尾,中間點的個數帶代表字元
    ret = re.findall('^a..n','helloalvin')   #匹配以a開頭,中間點的個數帶代表字元
    ret = re.findall('a..n$','helloalvin')   #匹配以n結尾的,中間點的個數代表字元
    ret = re.findall('d*','heddlloddddalvin')   #匹配字串中的d ,*匹配0到無窮次(貪婪匹配)
    ret = re.findall('d+','heddlloddddalvin')   #匹配字串中的d ,匹配1到無窮次(貪婪匹配)
    ret = re.findall('ed?','heddllodddeddalvin')   #匹配0到1次
    ret = re.findall('ed{0,}','heddllodddeddalvin')   #{0,}表示0到無窮,{1,}表示1到無窮,{1,}表示1到無窮 {0,1}表示0到1次
    ret  = re.findall('abc*?','abcccc')   #惰性匹配(以最少次數匹配)
    ret  = re.findall('a[bc]','abcdc')   #匹配[]裡面任意字元跟[]前面字元組合
    ret  = re.findall('q[a*z]','dwqdqasdq')   #匹配[]裡面任意字元跟[]前面字元組合
    ret  = re.findall('q[a-z]','quoqz')   # - 指範圍 匹配[]裡面任意字元跟[]前面字元組合
    ret  = re.findall('q[a-z]*','quoqz')   # - 指範圍 匹配[]裡面任意字元跟[]前面字元組合
    ret  = re.findall('q[A-Z]*','qu1oq3z')   # - 指範圍 匹配[]裡面任意字元跟[]前面字元組合
    ret = re.findall('q[^a-z]','q123')   #[^a-z] 非a-z開頭的
    ret = re.findall('q[^a-z]','qa123')   #[^a-z] 非a-z開頭的
    ret = eval('12+(56*6+5*(5-2))')
    ret = re.findall('\([^()]*\)','12+(56*6+5*(5-2))')
    ret = re.findall('\d+','12+(56*6+5*(5-2))')   #匹配數字
    ret = re.findall('\D+','12+(56*6+5*(5-2))')   #匹配非數字
    ret = re.findall('\s+','hello world')   #匹配空格
    ret = re.findall('\S+','hello world')   #匹配非空格
    ret = re.findall('\w+','hello world_')   #匹配字母數字相當於[a-zA-Z0-9]
    ret = re.findall('\W+','hello world_')   #匹配非字母數字相當於[a-zA-Z0-9]
    ret = re.findall(r'I\b','hello I am LIs')   #匹配一個特殊字元邊界 比如空格 &
    ret = re.findall('I\\b','hello I am LIs')
    ret = re.findall('c\\\\l','helloc\lsad')
    ret = re.findall(r'c\\l','helloc\lsad')
    ret = re.findall(r'ka|b','hellocdsbad')   #管道符|
    ret = re.findall(r'ka|b','hellocdska|bad')   #管道符|
    ret = re.findall('(abc)+','abcabcabc')   #分組
    ret = re.search('(?P<name\w+>)','abcabcabc').group()   #分組
    ret = re.search('\d+','abc23abc21abc').group()   #分組
    ret = re.search('(?P<name>[a-z]+>)','alex36wupeiq33').group()   #分組
    ret = re.search('(?P<name>[a-z]+>)\d+','alex36wupeiq33').group('name')   #分組
    ret = re.search('(?P<name>[a-z]+>)(?P<age>\d+>)','alex36wupeiq33').group('age')   #分組
    ret = re.match('a','abc').group()
    ret = re.split('[ab]','abc')   #先按a分割得到''和bcd 在對 ''和 bcd 分別按b分割
    ret = re.sub('\d','g','alvin5yuan6')
    ret = re.sub('\d','g','alvin5yuan6',1)   #1表示前一個
    ret = re.subn('\d','g','alvin5yuan6',1)   #1表示前一個
    ret = re.compile()
    ret = re.finditer()   #返回一個物件
logging模組
 
 
 
import logging
logging.basicConfig(
        level = logging.DEBUG,
        filename = 'logger.log',   #日誌存放位置
        filemode= 'w',
        format = '%(asctime)s %(filename)s[%(lineno)d] %(message)s'   #filename:執行檔名 asctime :時間 lineno:所在檔案行號 message:錯誤資訊
    )
logging.debug('hello')
logging.info('hello')
logging.warning('warning message')
logging.error('error')
logging.critical('critical message')

def logger():
    logger = logging.getLogger()
    fh = logging.FileHandler('test_log')
    ch = logging.StreamHandler()
    fm = logging.Formatter('%(asctime)s %(message)s')
    fh.setFormatter(fm)
    ch.setFormatter(fm)

    logger.addHandler(fh)
    logger.addHandler(ch)
    logger.setLevel('DEBUG')
    return logger
logger = logger()

logger.debug('hello')
logger.info('hello')
logger.warning('warning message')
logger.error('error')
logger.critical('critical message')
 
configparser模組
import configparser
config = configparser.ConfigParser()
config['DEFFAULT'] = {
    'ServerAliveInterval':'45',
    'Compression':'yes',
    "Comperssion":'9'
}
config['bitbucket.org'] = {}
config['bitbucket.org']['User'] = 'hg'
config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Host Port'] = '50022'
topsecret['ForwardXll'] = 'no'
config['DEFAULT']['ForwardXll'] = 'yes'
with open('example.ini','w') as f:
    config.write(f)

config = configparser.ConfigParser()

config.read('example.ini')
#-----查-------
print(config.sections())

print('bytebong.com' in config)

print(config['bitbucket.org']['user'])

print(config['DEFFAULT']['serveraliveinterval'])

for i in config['bitbucket.org']:   #會把DEFFAULT下的也拿出來
    print(i)

print(config.options('bitbucket.org'))
print(config.items('bitbucket.org'))
print(config.get('bitbucket.org','compression'))

#------增刪改------
config.add_section('yuan')
config.set('yuan','k1','22222')
config.remove_section('yuan')
config.remove_option('DEFAULT','forwardxll')
config.write(open('i.cfg','w'))
hashlib模組
import hashlib
objk = hashlib.md5()   #m = hashlib.sha256
objk = hashlib.sha256()   #m = hashlib.sha256
objk = hashlib.md5('sb'.encode('utf8'))   #加鹽

objk.update('heloo'.encode('utf8'))
print(objk.hexdigest())