Python模块

subprocess子进程模块

import subprocess
#Popen方法是用来执行系统命令的,直接把结果打印到终端了
res =subprocess.Popen(r'dir',shell=True,
                       #r'dsfsdfr',shell=True,
                       # stdin= #标准输入(不常用)
                        stdout=subprocess.PIPE,#stdout 标准输出
                        stderr=subprocess.PIPE) #stderr 标准错误
# 拿到的是‘gbk’编码的结果,
这个命令可能有正确结果,也可能有错误结果
print(res.stdout.read().decode('gbk'))
print('========')
print(res.stdout.read().decode('gbk'))  #说明只能读一次
print(res.stderr.read().decode('gbk'))  #如果是错误的就会提示

json和pickle

json,有点:所有语言通用;缺点:只能序列化基本的数据类型 list/dict/int..

pickle,有点:python中所有的东西都能被他序列化;缺点:序列化内容只有python认识

json

序列化,将python的值转换为json格式的字符串

json.dumps()

反序列化,将json格式的字符串转换为python的数据类型

json.loads()

字典或列表中如有中文,序列化时想要保留中文显示

v = {'k1':'哈哈'}

val = json.dumps(v,ensure_ascii=False)

安装第三方模块:

 pip install 包名

三类模块:
内置模块

第三方模块

自定义模块

 

sys

python解释器相关的数据

sys.path  默认python去导入模块时,会按照sys.path中的路劲挨个查找

sys.path.append('D:\')

sys.stdout.write('你好')  标准输出

  回到当前行的起始位置

sys.getrefcount(a)  获取一个值得应用计数

sys.getrecursionlimit()  python默认支持的递归数量

sys.exit(0)  程序终止

sys.argv

shutil

让用户执行脚本传入要删除的文件路径,在内部帮助将目录删除
import sys
import shutil
path = sys.argv[1]  #路径
shutil.rmtree(path)

shutil.rmtree('test')  删除一个目录
shutil.move('oldname','newname')  重命名
shutil.make_archive('zzh','zip','要压缩的文件')  压缩文件
shutil.unpack_archive('zzh.zip',extrac_dir='解压目录',format='zip')  解压文件

if not os.path.exists('code'):
  os.makedirs('code')
shutil.make_archive(os.path.join('code',ctime),'zip','D:python')
file_path = os.path.join('code',ctime) + 'zip'
shutil.unpack_archive(file_path,r'D:x1','zip')


模块导入
import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
sys.path.append(BASE_DIR)

os

和操作系统相关的

os.path.exists(path)  如果path存在;返回True;否则返回False

os.stat('filename或者路劲').st_size  获取文件字节大小

os.path.abspath(‘路劲’)  获取一个文件的绝对路径

os.path.dirname(‘name’)  获取文件的上级目录

os.path.join('data','bin')   路劲的拼接

os.listdir  查看一个没目录下所有的文件,第一层

os.walk   查看一个目录下所有的文件,所有层

os.mkdir  创建目录(一级)

os.makedirs  创建目录(多级)

os.rename(''old'',''new'')  文件夹重命名

file_path = r'ddddxxxxoo.txt'  #创建目录
file_folder = os.path.dirname(file_path)
if not os.path.exists(file_folder):
os.makedirs(file_folder)

r

v = r"zzcc yy"  把转义掉,没有换行了

getpass

密码密文

v = getpass.getpass('Please Input Password:')

 

hashlib

MD5加密

def get_md5(pwd):

  obj =hashlib.md5('asd'.encode"utf-8")  #加盐

  obj.update(pwd.encode"utf-8")  #明文

  result = obj.hexigest()  #密文

  return result

random

random.choice(['1','2','3'])      #随机选出一个字符串

random.random()      #随机浮点数

random.uniform(1,10)       #1到10随机浮点数

random.randint(0,99)    #0到99之间随机一个,范围随机

random.randrange(0,100,2)    #0到100之间随机整数

random.choice('jfoiewh9838')  #随机选出1个字符

random.sample('f4ji2332d4',3)  #随机选出3个字符

a = [1,2,3,4]

random.shuffle(a)    #洗牌

 

datatime&time

 from datetime import datetime

ctime = datetime.now().strftime('%Y-%m-%d %H-%M-%S') 当前时间

print (ctime)

ctime.strftime("%Y-%m-%d %H:%M:%S")  转时间,可以字符串格式,后加时间格式

字符串转datetime,可以进行时间加减

v1 = datetime.strptime('2011-11-11','%Y-%m-%d')

v2 = v1 + timedelta(days=140)  #v1加上140天,还可写(hours=20)小时

datetime.utcnow()  当前UTC时间

import time,datetime
a = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())
print(a)
2019-05-28 20:47:09


paramiko
连接Linux

ssh = parmiko.SSHClient()#创建实例对象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())#调用方法,标识没有远程机器的公钥,允许连接
ssh.connect('IP','port','user','passwd')#连接远程主机
sudin,stdout,stder = ssh.exec_command('命令')#stdout命令执行后的结果,stder错误信息
OUT = stdout.readlinex()需要read函数来读取
for i in OUT:
  print(i)
ssh.close()


logging模块
logging.basicConfig(**kwargs)函数用于调整日志级别,输出格式
import logging
logging.basicConfig(filename='日志.txt',
format="%(asctime)s %(name)s %(levelname)s %(module)s: %(message)s",
datefmt='%Y-%m-%d %H:%M:%S')
import traceback
def func():
try:
a = a + 1
except Exception as e:
mas = traceback.format_exc()
logging.error(mas)
func()

            
logging.info("info_msg")
logging.warning("warning_msg")
logging.error("error_msg")
logging.critical("critical_msg")

%(asctime)s  将日志的时间构造成,默认情况下是精准到毫秒
%(name)s  所使用的日志器名称,默认是‘root’,因为默认使用的是rootLogger
%(module)  调用日志输出函数的模块名,filename的名称不符,不包含后缀即不包含文件后缀的文件名

自定义日志


原文地址:https://www.cnblogs.com/nice777/p/10939580.html