一、time&datetime模块

import timeprint(time.time())  #1554370227.6189237 秒, 时间戳,从1970年1月1日 00:00开始到现在,1970年是Unix元年t = time.localtime()  #结构化时间,本地时间
print(t)  #time.struct_time(tm_year=2019, tm_mon=4, tm_mday=4, tm_hour=17, tm_min=39, tm_sec=40, tm_wday=3, tm_yday=94, tm_isdst=0)
print(t.tm_year)  #2019 ,取年份
print(time.localtime(1554371025.1826413))  #将当前时间转换为结构化时间t2 = time.gmtime()  #结构化时间,UTC时间
print(t2)  #time.struct_time(tm_year=2019, tm_mon=4, tm_mday=4, tm_hour=9, tm_min=39, tm_sec=40, tm_wday=3, tm_yday=94, tm_isdst=0)print(time.mktime(time.localtime()))  #将结构化时间转换为时间戳print(time.strftime("%Y-%m-%d %X", time.localtime()))  #2019-04-04 18:16:04  将结构化时间转换为字符串时间print(time.strptime("2019-04-04 18:16:04", "%Y-%m-%d %H:%M:%S"))  #time.struct_time(tm_year=2019, tm_mon=4, tm_mday=4, tm_hour=18, tm_min=16, tm_sec=4, tm_wday=3, tm_yday=94, tm_isdst=-1)  将字符串时间转换为结构化时间print(time.asctime())  #将结构化时间转换为固定的格式, Mon Apr  8 15:47:59 2019print(time.ctime())  #将时间戳时间转换为固定的格式, Mon Apr  8 15:48:48 2019import datetimeprint(datetime.datetime.now())  #2019-04-08 15:54:06.410871

二、random模块

import randomprint(random.random())  #0 ~ 1之间的浮点数
print(random.randint(1,10))  #1 ~ 10之间的整数
print(random.randrange(1,10))  #1 ~ 10之间的整数,不包括10
print(random.choice([11,22,33]))  #在列表中随机取1个元素
print(random.sample([11,22,33],2))  #在列表中随机取2个元素
print(random.uniform(1,5))  #1 ~ 5之间的浮点数
l = [1,2,3,4,5]
random.shuffle(l)  #洗牌
print(l)  #[4, 1, 3, 5, 2]
  • 随机验证码代码示例
import randomdef v_code():ret = ""for i in range(5):num = random.randint(0,9)alf = chr(random.randint(65,90))s = str(random.choice([num,alf]))ret += sreturn retprint(v_code())

三、BASE_DIR

import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(BASE_DIR)  #D:\VirtualBox VMs\data\pyobj\1904
sys.path.append(BASE_DIR)
print(sys.path)  #['D:\\VirtualBox VMs\\data\\pyobj\\1904\\0404', 'D:\\VirtualBox VMs\\data\\pyobj\\1904', 'C:\\Python\\Python35\\python35.zip', 'C:\\Python\\Python35\\DLLs', 'C:\\Python\\Python35\\lib', 'C:\\Python\\Python35', 'C:\\Python\\Python35\\lib\\site-packages', 'D:\\VirtualBox VMs\\data\\pyobj\\1904']

四、os模块

import osprint(os.getcwd())  #获取当前工作目录,D:\VirtualBox VMs\data\pyobj\1904\0404
os.chdir("D:\\VirtualBox VMs\\data\\pyobj\\1904\\")  #cd命令
print(os.getcwd())  #D:\VirtualBox VMs\data\pyobj\1904# 目录操作
os.makedirs("dir1/dir2/dir3")  #mkdir -p dir1/dir2/dir3
os.removedirs("dir1/dir2/dir3")  #rmdir -p dir1/dir2/dir3
os.mkdir("dir1")  #mkdir dir1
os.rmdir("dir1")  #rmdir dir1
print(os.listdir("0403"))  #ls -a# 文件操作
os.remove("test.txt")  #删除一个文件
os.rename("test.txt", "new_test.txt")
print(os.stat("new_test.txt"))  #文件的元数据,os.stat_result(st_mode=33206, st_ino=9570149208162616, st_dev=2457279955, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1554785068, st_mtime=1554785068, st_ctime=1554785068)
print(os.path.getatime("new_test.txt"))
print(os.path.getmtime("new_test.txt"))
print(os.path.getctime("new_test.txt"))# 其他
print(os.sep)  #路径分隔符
print(os.linesep)  #换行符
print(os.pathsep)  #路径分隔符,比如环境变量的配置
print(os.name)  #操作系统的名字
print(os.system("ipconfig"))  #执行操作系统命令# 路径
print(os.path.split(os.getcwd()))  #('D:\\VirtualBox VMs\\data\\pyobj\\1904', '0404')
print(os.path.dirname(os.getcwd()))  #D:\VirtualBox VMs\data\pyobj\1904
print(os.path.basename(os.getcwd()))  #0404
print(os.path.exists("D:\\dir1\\test.txt"))  #判断路径是否存在
print(os.path.isabs("D:\\dir1\\test.txt"))  #是否是绝对路径
print(os.path.isfile("D:\\dir1\\test.txt"))  #是否是一个文件
a = "D:\\dir1"
b = "test.txt"
print(os.path.join(a,b))  #路径拼接,D:\dir1\test.txt

五、sys模块

import sysprint(sys.argv)  #命令行参数列表,第一个元素是程序本身路径,['D:/VirtualBox VMs/data/pyobj/1904/0404/模块.py']print(sys.version)  #python版本,3.5.3 (v3.5.3:1880cb95a742, Jan 16 2017, 16:02:32) [MSC v.1900 64 bit (AMD64)]sys.stdout.write('#')  #打印到屏幕,#sys.exit(1)  #退出程序print(sys.path)  #打印环境变量print(sys.platform)  #打印操作系统平台名称
  • 进度条
import time,sys
for i in range(30):sys.stdout.write('#')time.sleep(0.1)sys.stdout.flush()

六、json、pickle和shelve模块

  • json的应用(dumps和loads)
import jsondic = {"name":"dongfei", "age":18, "gender":"M"}
data = json.dumps(dic)
print(data, type(data))  #{"name": "dongfei", "age": 18, "gender": "M"} <class 'str'># with open("test.json", "w", encoding="utf-8") as f:
#     f.write(data)with open("test.json", "r", encoding="utf-8") as f:new_data = json.loads(f.read())print(new_data,type(new_data))  #{'age': 18, 'name': 'dongfei', 'gender': 'M'} <class 'dict'>
  • json的应用(dump和load)
import jsondic = {"name":"dongfei", "age":18, "gender":"M"}with open("test2.json", "w", encoding="utf-8") as f:json.dump(dic,f)with open("test2.json", "r", encoding="utf-8") as f:new_data = json.load(f)print(new_data,type(new_data))  #{'gender': 'M', 'name': 'dongfei', 'age': 18} <class 'dict'>
  • pickle用法和json完全一样,但是pickle支持序列化函数和类,但是只能在python程序间使用,pickle文本不可读

  • shelve使用方法(pickle的高级封装)

import shelvef = shelve.open(r"test4.txt")
f["stu1_info"] = {"name":"dongfei", "age":18, "gender":"M"}
print(f.get("stu1_info")["age"])  #18

七、xml模块

  • test5.xml
<?xml version="1.0"?>
<data><country name="Liechtenstein"><rank updated="yes">2</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country><country name="Singapore"><rank updated="yes">5</rank><year>2011</year><gdppc>59900</gdppc><neighbor name="Malaysia" direction="N"/></country><country name="Panama"><rank updated="yes">69</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="Costa Rica" direction="W"/><neighbor name="Colombia" direction="E"/></country>
</data>
  • xml的操作
import xml.etree.ElementTree as ETtree = ET.parse("test5.xml")
root = tree.getroot()  #获取根节点
print(root.tag)  #根标签名字,data# 遍历xml文档
for child in root:print(child.tag, child.attrib)for i in child:print(i.tag, i.text)  #text取内容# 遍历year节点
for node in root.iter("year"):print(node.tag, node.text)# 修改
for node in root.iter("year"):new_year = int(node.text) + 1node.text = str(new_year)  #修改内容node.set("update", "yes")  #修改属性值tree.write("test6.xml")# 删除
for country in root.findall("country"):  #findall查找文档中所有rank = int(country.find("rank").text)if rank > 50:root.remove(country)tree.write("test7.xml")
  • 创建xml数据
import xml.etree.ElementTree as ETnew_xml = ET.Element("namelist")  #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 = 'M'name2 = ET.SubElement(new_xml, "name", attrib={"enrolled":"no"})
age = ET.SubElement(name2, "age")
age.text = "18"et = ET.ElementTree(new_xml)  #生成文档对象
et.write("test8.xml", encoding="utf-8", xml_declaration=True)
ET.dump(new_xml)  #打印生成的文档对象
  • test8.xml
<?xml version='1.0' encoding='utf-8'?>
<namelist><name enrolled="yes"><age checked="no" /><sex>M</sex></name><name enrolled="no"><age>18</age></name>
</namelist>

八、re模块

1、正则表达式元字符

  1. . 任意一个字符
  2. ^,$ 行首/尾锚定
  3. * 0或无穷次
  4. + 1或无穷次
  5. ? 0或1次
  6. {3,5} 3或4或5次
  7. [] 字符集
[a-z]  表示所有小写字母
[^a-z]  表示所有小写字符外的字符
re.findall("\([^()]*\)","12+(23*5+2-5*(4-2))")  #['(4-2)']  匹配最里边的括号和内容
  1. \ 转义符
\d  匹配任何十进制数;它相当于类 [0-9]
\D  匹配任何非数字字符;它相当于类 [^0-9]
\s  匹配任何空白字符;它相当于类 [ \t\n\r\f\v]
\S  匹配任何非空白字符;它相当于类 [^ \t\n\r\f\v]
\w  匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]
\W  匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]
\b  匹配一个特殊字符边界,比如空格 ,&,#等,单词锚定
>>> re.findall("I\\b","hello I am list")
['I']
>>> re.findall(r"I\b","hello I am list")  #r 的意思是原生字符串,里边的内容不需要让python解释器翻译
['I']
  1. | 或
  2. () 分组,将括号内的变成一个整体
>>> re.search(r"(?P<str_name>[a-z]+)\d+","hello33 I am list").group("str_name")  #后向引用
'hello'

2、re模块使用

import reprint(re.findall("\d+", "asdf123alsdkjflwk332alskjdfkl55kk"))  #查询字符串中所有匹配到的元素,并返回一个列表print(re.search(r"(?P<str_name>[a-z]+)\d+","hello33 I am list").group("str_name"))  #匹配到第一个匹配到的元素,返回一个对象print(re.match("abc","abc123abc"))  #相当于在search基础上加了^行首锚定print(re.split("[,|]","abc,sdf,dfs|jkljks|sd"))  #使用特定的分隔符讲字符串分割后返回列表print(re.sub("\d","B","abc123sdf33ds"))  #将匹配到的做替换操作,abcBBBsdfBBdsprint(re.subn("\d","B","abc123sdf33ds"))  #('abcBBBsdfBBds', 5)rule = re.compile("\d+")  #编译
print(rule.findall("asdf123alsdkjflwk332alskjdfkl55kk"))  #['123', '332', '55']iter1 = re.finditer("\d+","asdf123alsdkjflwk332alskjdfkl55kk")  #返回一个迭代器对象
print(next(iter1).group())  #123print(re.findall("www\.(baidu|qq|aliyun)\.com","www.baidu.com"))  #['baidu']
print(re.findall("www\.(?:baidu|qq|aliyun)\.com","www.baidu.com"))  #?:  去优先级,['www.baidu.com']

九、logging模块

  • basicConfig
import logginglogging.basicConfig(level=logging.INFO,  #定义日志记录级别filename="dongfei.log",  #存放到文件中filemode="w",  #日志记录模式,默认是追加模式format="%(asctime)s %(filename)s [%(lineno)d] %(message)s"
)logging.debug("debug message")
logging.info("info message")
logging.warning("warning message")
logging.error("error message")
logging.critical("critical message")
  • format参数中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
%(message)s用户输出的消息
  • logger对象
import loggingdef logger(logfile):logger = logging.getLogger("mylogger")logger.setLevel("INFO")  #设置日志级别fh = logging.FileHandler(logfile)  #向文件输出ch = logging.StreamHandler()  #向屏幕输出fm = logging.Formatter("%(asctime)s %(message)s")  #自定义格式fh.setFormatter(fm)ch.setFormatter(fm)logger.addHandler(fh)logger.addHandler(ch)return loggerlogger = logger("dongfei2.log")  #实例化logger.debug("debug message")
logger.info("info message")
logger.warning("warning message")
logger.error("error message")
logger.critical("critical message")

十、configparser模块

  • 应用
import configparserconfig = configparser.ConfigParser()  #实例化config["DEFAULT"] = {"ServerAliveInterval": 45,"Compression": "yes","CompressionLevel": 9
}with open("dongfei2.conf", "w") as f:config.write(f)
  • confile.conf
[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes[bitbucket.org]
User = hg[topsecret.server.com]
Port = 50022
ForwardX11 = no
import configparserconfig = configparser.ConfigParser()config.read("confile.conf")# 查
print(config.sections())  #查询除default外的所有键['bitbucket.org', 'topsecret.server.com']print(config["bitbucket.org"]["User"])  #查 ,hgprint(config["DEFAULT"]["CompressionLevel"])  #9for key in config["bitbucket.org"]:  #无论遍历哪个键都会显示default段print(key)print(config.options("bitbucket.org"))  #['user', 'serveraliveinterval', 'compression', 'compressionlevel', 'forwardx11']print(config.items("bitbucket.org"))  #[('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes'), ('user', 'hg')]print(config.get("bitbucket.org","CompressionLevel"))  #9
  • 增删改
import configparserconfig = configparser.ConfigParser()config.read("confile.conf")config.add_section("open.org")  #增键
config.set("open.org","k1","v1")  #增值config.remove_section("topsecret.server.com")  #删键
config.remove_option("DEFAULT","compression")  #删值config.set("DEFAULT","serveraliveinterval","56")  #改config.write(open("confile2.conf","w"))

十一、hashlib模块

import hashlibobj = hashlib.md5("with salt".encode("utf-8"))obj.update("dongfei123".encode("utf-8"))print(obj.hexdigest())  #ace17212e78240faf0773e40d8d4f268

十二、paramiko模块

  • 基于密码ssh连接
# Author:Li Dongfei
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='192.168.56.8', port=22, username='root', password='dongfei')
stdin, stdout, stderr = ssh.exec_command('df')
result = stdout.read()
ssh.close()
  • 基于密钥ssh连接
# Author:Li Dongfei
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
ssh = paramiko.SSHClient()
ssh.connect(hostname='192.168.56.8', port=22, username='root', pkey=private_key)
stdin, stdout, stderr = ssh.exec_command('df')
result = stdout.read()
print(result.decode())
ssh.close()
  • 基于密码sftp传输文件
# Author:Li Dongfei
import paramiko
transport = paramiko.Transport(('192.168.56.8', 22))
transport.connect(username='root', password='dongfei')
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.get('/root/back.sql','back.sql')
transport.close()

转载于:https://www.cnblogs.com/L-dongf/p/10732517.html

190403内置模块相关推荐

  1. python内置模块重要程度排名_论Python常见的内置模块

    Python常见的内置模块 系统的内置模块 sys hashlib hmac base64 time datetime sys模块 sys.argv()# 在Python脚本传参使用 sys.exit ...

  2. python基础知识8——常见内置模块

    Python之路-python(常用模块学习) 模块介绍 time &datetime模块 random os sys shutil shelve xml处理 yaml处理 configpar ...

  3. python常用内置模块-Python-常用的内置模块

    常用的内置模块的介绍os,sys,time,datetime,json/pickle,shutil,random 一.os 1.切换目录,查看当前工作的目录os.getcwd 2.当前目录,上级目录o ...

  4. python turtle循环图案-Python内置模块turtle绘图详解

    urtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的 ...

  5. python常用内置模块-Python基础-22常用内置模块

    22. 常用内置模块 22.1 random模块 随机数据可以用于数学.测试.安全.算法等领域中.内置random模块,可用于生成伪随机数. 真正意义上的随机数或随机事件是在某次产生过程中是按照实验过 ...

  6. python常用内置模块-Python内置模块和第三方模块

    Python的强大之处在于他有非常丰富和强大的标准库和第三方库(模块),几乎你想实现的任何功能都有相应的Python库支持,就类似于C#中的类库亦或JAVA的jar包,前端中的JS库. 使用模块有什么 ...

  7. python常用内置模块-Python常用内置模块之xml模块

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  8. python常用内置模块-Python常用内置模块之xml模块(详解)

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

  9. python常用内置模块-python 常用内置模块使用

    python模块分类:1,标准库2,开源模块3,自定义模块 python 常用内置模块使用 1,time与datetime获取时间戳: time.time() 时间元组: time.localtime ...

最新文章

  1. Ubuntu~Tensorflow~GPU
  2. Hyperledger Fabric 区块数据结构(1)Block
  3. 【机器学习】NeuralProphet,这个时序工具包也太强了吧...
  4. golang goroutine协程概念及入门:轻量级线程(或用户态线程)
  5. c语言将程序写为动态库,VS下生成C程序静态库(LIB)及动态库(DLL)的方法
  6. 前端在线学习网站W3School
  7. 【蓝桥杯嵌入式】【STM32】2_KEYBOARD(主循环扫描+外部中断)
  8. kaggle房价预测特征意思_Kaggle初探--房价预测案例之数据分析
  9. C/C++ volatile
  10. ADO.NET 之 一
  11. 企业发展如何启动云的力量
  12. 深度学习之RNN循环神经网络(理论+图解+Python代码部分)
  13. H12-211数通HCNA题库解析(一)
  14. 让win10系统不进行自动更新的方法
  15. 物联网全栈教程(1)——总目录
  16. 关于axure的 中继器表格合计功能
  17. VBA教程初级(五):复杂数组
  18. (入门)前端开发的简单介绍
  19. 单片机万年历c语言程序设计,基于AT89C51单片机的多功能
  20. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day23】—— 算法1

热门文章

  1. 公司网络机房搭建,信息化目标,网络故障处理办法
  2. 夜神模拟器连接手柄无反应_夜神安卓模拟器怎么连接手柄 夜神模拟器连接手柄教程...
  3. SRS源码阅读(一)
  4. 漏洞修复:Often Misused: HTTP Method Override
  5. 执行股票交易接口get提交方法如何获取三大指数的股票列表?
  6. 给div添加漂亮的边框背景图
  7. deep learning编程作业总结1---喵咪识别
  8. 为Metabase Pulses添加slack代理支持
  9. 调试数字音量等级的方法
  10. 循环结构验证哥德巴赫猜想