Python-模块

官方文档:https://docs.python.org/zh-cn/3/tutorial/index.html

一、模块分类

标准库

Python 提供的模块,可以直接调用

开源模块

第三方模块,使用前需要先pip安装

https://pypi.org/

自定义模块

自己开发的模块

模块使用

#1.导入整个模块
import os
import os,sys
#2.为模块起别名
import sys as s 
#3.导入模块中的部分内容
from module import fun1,fun2
from os import getpwd()

第三方模块安装

#使用前需安装依赖
yum install python3-devel

#安装
pip3 install 模块名
#卸载
pip3 uninstall 模块名
#查看已安装的模块
pip3 list
#查看模块信息
pip3 show 模块名

二、常用标准库

官方文档:https://docs.python.org/zh-cn/3/library/index.html

1、os

https://www.runoob.com/python/os-file-methods.html

#获取当前路径
print(os.getcwd())
#改变当前目录
os.chdir("/tmp")
#获取文件的状态信息,结果为tuple
os.stat(path)
os.stat(path).st_....
#获取文件的大小
os.path.getsize(path)

#得到文件的绝对路径
print(os.path.abspath(__file__))
#获取路径中目录部分
print(os.path.dirname("/etc/fstab")) 
#获取路径中文件名部分
print(os.path.basename("/etc/fstab"))
#把dirname和basename合并
print(os.path.join("/etc","fstab"))

#判断文件是否存在
os.path.exists(path)
#判断是否为文件
os.path.isfile(path)
#判断是否为目录
os.path.isdir(path)

#重命名
os.rename("oldName","newName")
#删除文件
os.remove(path)

#创建目录
os.mkdir("/tmp/a")
os.makedirs("/tmp/a/b/c")
#删除目录
os.rmdir("/tmp/a")
os.removedirs("/tmp/a/b/c")

执行shell

os.popen("touch /tmp/1.txt")
os.system("touch /tmp/2.txt")

#查看命令执行后的内容
print(os.popen("cat /etc/fstab").read())

2、sys

# sys.argv[0]等同于shell里的$0, sys.argv[1]等同于shell里的$1,以此类推
sys.argv[n]

3.time

菜鸟教程:https://www.runoob.com/python/python-date-time.html

#获取当前时间,结果为tuple
print(time.localtime())
# 打印当前时间(格式化字符串)
print(time.strftime("%Y-%m-%d %H:%M:%S"))
print(time.strftime("%F %T")) 
# 打印当前时间(常规字符串格式)
print(time.asctime()) 
# 打印当前时间,离1970年1月1号0点的秒数(时间戳)
print(time.time()) 

时间转换

# 格式化字符串转时间元组
print(time.strptime("2018-01-01 10:30:25","%Y-%m-%d %H:%M:%S")) 
#时间元组转时间戳
print(time.mktime(time.localtime()))
#时间戳转时间元组
print(time.localtime(1514774430))

4.random

import random
# 0-1之间的浮点数随机
print(random.random()) 
# 1-3间的浮点数随机
print(random.uniform(1,3)) 
# 1-3整数随机
print(random.randint(1,3)) 
# 1-2整数随机
print(random.randrange(1,3)) 
# 随机1,3,5,7这四个数
print(random.randrange(1,9,2)) 
 # 字符串里随机一位,包含中间的逗号
print(random.choice("hello,world"))
# 从前面的字符串中随机取3位,返回结果为列表
print(random.sample("hello,world", 3)) 
## 列表顺序打乱
list = [1, 2, 3, 4, 5]
random.shuffle(list) 
print(list)

5、re

regex ,正则表达式

官方文档:https://docs.python.org/zh-cn/3/library/re.html

30分钟正则:https://deerchao.cn/tutorials/regex/regex.htm

常用函数

import re

#开头匹配,从开始位置匹配
re.match()
#全文匹配,只返回第一个匹配项
re.search()
#全文匹配,返回所有匹配项目,返回结果为列表
re.findall()
#分隔
re.split()
#匹配并替换
re.sub()

实例

#re.split()
str2 = "a b c d e f "
print(re.split(" ",str2))
#结果:['a', 'b', 'c', 'd', 'e', 'f', '']

#re.sub()
str3 ="a b a c a"
print(re.sub("a","A",str3))
#结果:A b A c A
print(re.sub("a","A",str3,2))
#结果:A b A c a

三、第三方模块

psutil

https://www.liaoxuefeng.com/wiki/1016959663602400/1183565811281984

# cpu
#查看cpu状态,类型为tuple
print(psutil.cpu_times()) 
#查看cpu核数,类型为int
print(psutil.cpu_count()) 


# memory
#查看内存状态,类型为tuple
print(psutil.virtual_memory()) 
#查看swap状态,类型为tuple
print(psutil.swap_memory()) 

查看磁盘信息

for i in psutil.disk_partitions():
    if i.fstype == '':
        continue

    info = psutil.disk_usage(i.device)
    print("{}\t {}\t {}GB\t {}GB\t {}GB\t {}%".format(
        i.device,
        i.mountpoint,
        format(info.total/1024/1024/1024,".2f"),
        format(info.used/1024/1024/1024,".2f"),
        format(info.free/1024/1024/1024,".2f"),
        format(info.used/info.total*100,".2f"),
    ))

paramiko

连接服务器

import paramiko
#创建新的连接实例
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy) 
#设置远程服务器信息
ssh.connect(hostname="10.1.1.67", port=22, username="root", password="xxh")

# 执行命令
stdin,stdout,stderr = ssh.exec_command("cat /tmp/123.txt")
#标准输出赋值
print(stdout.read().decode()) 
#错误输出赋值
print(stderr.read().decode()) 

#关闭此连接实例
ssh.close()

文件上传下载

import paramiko

trans = paramiko.Transport(("10.1.1.67",22))
trans.connect(username="root",password="xxh")
sftp = paramiko.SFTPClient.from_transport(trans)
# 下载文件到本地
sftp.get("/tmp/2.txt","./2.txt") 
# 上传文件
sftp.put("./1.txt","/tmp/1.txt") 
trans.close()
Last modification:February 20th, 2020 at 03:53 pm