码迷,mamicode.com
首页 > 其他好文 > 详细

12-14 模块

时间:2019-02-25 23:31:06      阅读:494      评论:0      收藏:0      [点我收藏+]

标签:gad   logging模块   less   odi   数字   重要   xml模块   ftime   匹配   

模块:一个py文件成为一个模块
好处:大大提高了可维护性

分为三种:
Python标准库模块 第三方模块 应用程序自定义模块

import:
执行了对应文件
引入变量名
解释器目录下调用 方式:

from web.web1.web2.web3.cal import add
from web.web1.web2.web3 import cal

cal.py: 
def add
  test.py:
  import cal
  print(cal.add(3,5))

or
from cal import *    #不推荐 容易出麻烦
直接add

 



模块最后的调试代码前加上
if __name__==‘__main__‘:
XXXXX

内置模块:
os与操作系统打交道 详见随笔——文件处理

最重要:logging模块 re模块(正则模块)


time模块

import time 
#时间戳 做计算用
print(time.time()) #秒数 从1970.1.1凌晨算起 1970 Unix诞生时间

print(time.localtime())    #struct_time
t=time.localtime()
print(t.tm_year)

#将结构化时间转换为时间戳
print(time.mktime(time.localtime()))
#将结构化时间转换为字符串时间
print(time.strftime(%Y/%m/%d %X,time.localtime()))
#将字符串时间转换为结构化时间
print(wime.strptime(2016:12:24:17:50:36,%Y:%m:%d:%X))
#直接看时间
print(time.asctime())
print(time.ctime())

import datatime
print(datatime.datatime.now())    #符合我们习惯的时间

 


random模块

import random
ret=random.randint(1,3)    #0-1随机浮点数
ret=random.randrange(1,3)
ret=random.choice([11,22])
ret=random.sample([11,22,33,66,99,55],2)
print(ret)


ret=[1,2,3,4,5]
random.shuffle(ret)

def v_code():
  ret=""
  for i in range (5):
    num=random.randint(0,9)
    alf=chr(random.randint(65,122))
    s=str(random.choice([num,alf]))
    ret+=s
  return ret
print(ret)

 



sys模块
sys.argv #命令行参数list 第一个元素是程序本身路径
sys.exit #退出程序 正常退出时exit(0)
sys.stdout.write(‘#‘) #进度条~~~print

json & pickle #数据交换
import json

dic={"name":"alex"}

data=json.dumps(dic) #将单引号变成双引号 数据类型变为字符串
print(type(data))

json.loads() #与上述相反


import pickle
dic={‘name‘:‘alvin‘,‘age‘:23,‘sex‘:‘male‘}
j=pickle.dumps(dic) #处理为字节bytes
pickle写入文件 人类不可读 识别数据类型更多

shelve模块:只有一个open 不常用 了解

XML模块

import xml.etree.ElementTree as ET

tree = ET.parse("xml_lesson")
root = tree.getroot()
print(root.tag)

for i in root:
  # print(i.tag) #标签
  print(i.attrib) #属性
  for j in i:
    print(j.tag)
    print(j.text) #所有标签文本内容

#只遍历year标签
for node in root.iter(year):
  print(node.tag,node.text)

#修改
for node in root.iter(year)
  new_year=int(node.text)+1
  node.text=str(new_year)
  node.set("updated","yes")

tree.write("xmltest.xml")

#删除
for country in root.findall(country)
  rank=int(country.find(rank).text)
  if rank>50:
    root.remove(country)

#创建xml文件
import xml.etree.ElementTree as ET
new_xml=ET.Element(namelist)

name = ET.SubElement(new_xml,name,attrib={"enrolled":"yes"})
age=ET.SubElement(name,"age",attrib={"checked":"no"})
sex=ET.SubElement(name,"sex")
sex.text=33
#name2=

et=ET.ElementTree(new_xml) #生成文档对象
et,write("test.xml,encoding="utf-8",xml_declaration=True)

#ET.dump(new_xml) #打印生成的格式

 

re模块 正则
re.findall(‘alex‘,‘akjghkhdkgalexkjgkh‘)

元字符 . ^ $ * + ? {} [] | () \
re.findall(‘a..x‘,‘akjghkhdkgalexkjgkh‘) # .通配符

# ^ 以XX开头 ^必须放最前头
re.findall(‘^a..x‘,‘aghdgjgsgsgjks’)

# $ 以Xx结尾
re.findall(‘a..x$‘,‘ksjaghdgsjcxx‘) #结尾必须是aXXx

# * + ? {} 重复
re.findall(‘a*‘,‘ksjaaaaghdgsjcxx‘) #匹配重复几个a
re.findall(‘alex*‘,‘ksjaleghdgsjcxx‘) #* [0,+00]
re.findall(‘alex+‘,‘ksjalexxxghdgsjcxx‘)#+ 匹配[1,+00]
# ? 匹配[0,1] 同上述例子 最多一个x
# {} 匹配次数自定
re.findall(‘alex{0,6}‘,‘ksjaleghdgsjcxx‘)

#上述均是贪婪匹配 修改为惰性匹配
# []
re.findall("x[yz]","xyuuuxzuuu") #二选一
re.findall("x[a*z]","xyuuuxzuuu") #中括号内 *是普通字符
re.findall("x[a-z]","xyuuuxzuuu") #q后面a-z的所有字母都可以
re.findall("x[^a-z]","xyuuuxzuuu") #非a-z的都可以
re.findall("\([^()]*\)","21+(6*5+5*(2+3))") #取最内层括号

# | 管道符 或者

# \ 重要性max 无意义的有意义 有意义的无意义
\d 匹配任何十进制数
\D 匹配任何非数字字符 相当于0-9
\s 匹配任何空白字符
\S 匹配任何非空白字符
\w 匹配任何字母数字
\W 匹配任何非字母数字
\b 匹配一个特殊字符边界 比如空格 & # 等

re.findall("I\\b","hello I am List")#
re.findall(r"I\b","hello I am List")

re.findall("(?P<name>[a-z]+)","jdzhgadgsgf365j")
re.search("(?P<name>[a-z]+)\(?P<age>\d+)","jdzhgadgsgf365j").group(‘name‘)

re下方法
re.match #search下加^ 匹配开头
re.split
re.split("[ |]","hello abc def") #以空格或者管道符号分割
re.split("[ab]","asdabcd")
[‘‘,‘sd‘,‘‘,‘cd‘]
re.sub
re.sub("\d+","A","jskafhjf654a6alkjg5546a")
#把数字变成A
re.compile("\d+")
com=re.compile("\d+") #编译规则赋予com
调用时候直接com.findall("asmgn54847akjsfh65")

logging 模块

import logging

logging.basicConfig(
level=logging.DEBUG
filename="logger.log"
filemode="w"
format = "%(asctime)s%(lineno)d"
)

logging.debug(debug message)
logging.info(info message)
logging.warning(warning message)
logging.error(error message)
logging.critical(critical message)

#-------------------------logger
#吸星大法~~~!!!
#同时向屏幕和文件输入
def logger():
  logger = logging.getLogger()

  fm = logging.Formatter("%(asctime)s %(message)s")

  fh = logging.FileHandler("test_log") #向文件发送内容
  ch = logging.StreamHandler() #向屏幕发送

  logger.addHandler(fh)
  logger.addHandler(ch)

  returm logger

logging.debug(debug message)
logging.info(info message)
logging.warning(warning message)
logging.error(error message)
logging.critical(critical message)

 

 

 

 

 





,

12-14 模块

标签:gad   logging模块   less   odi   数字   重要   xml模块   ftime   匹配   

原文地址:https://www.cnblogs.com/louzhiyuan/p/10434462.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!