python模块

模块

模块定义

模块分为内置模块、自定义模块、第三方模块
自定义模块:将自定义模块的py文件或者py目录,放在sys.path的路径下就可以被加载
注意: py2需要在文件路径加__init__.py

导入模块

import module_name 导入模块中得所有功能

import os
dirname = os.path.dirname('AppData\Local\Programs\Python\Python37')
print(dirname) 
>AppData\Local\Programs\Python 

from module_name import *|func_name[,func_name...] 导入某个模块的某一个功能或多个功能,在执行时不需要在引用模块名称

from os import path
dirname = path.dirname('/etc/nginx/nginx.conf')
print(dirname)
>/etc/nginx
for example

支持文件夹下的文件,自动将上层目录下的py文件作为模块导入到到本文件

import os
import sys
path = os.path.abspath(__file__)
import_path = os.path.dirname(os.path.dirname(path))
sys.path.append(import_path)

json

在不同语言中做数据交换

json与pickle的比较

json:所有语言通用,但是只能序列化基础数据类型list/dict/int
pickle:python中所有数据类型都能被序列化(除socket对象),但是序列化后的内容只能被python认识

json.dumps #将python的文件的列表、字典类型转为json格式------序列化
ensure_acsii=Flase 序列化时保留为中文输出

source = [11,22,33,44,'你好']
print(json.dumps(source),type(json.dumps(source)))  
>[11, 22, 33, 44, "\u4f60\u597d"] <class 'str'> 
print(json.dumps(source,ensure_ascii=False))
>[11, 22, 33, 44 , '你好']

json.loads #将其他语言的json格式转换为python的类型------反序列化

source = '[22,33,44,55]'  
print(json.loads(source),type(json.loads(source)))   
>[22, 33, 44, 55] <class 'list'>

json.dump(v,f) 序列化v并写到文件
json.load(f) 读取文件f并做反序列化

pickle

pickle.dumps
pickle.loads

def func():
    print('pickle')
data1 = pickle.dumps(func)
print(data1)
> b'\x80\x03c__main__\nfunc\nq\x00.'
data2 = pickle.loads(data1)
print(data2)
> <function func at 0x0000019B6D344CA8>
data2()
> pickle

sys

sys.path 获取python读取模块的默认路径
sys.path.append('path') 增加path路径为默认模块路径
sys.argv 给py脚本进行传参
sys.argv[1]获取脚本的第一个参数

os

os.rename
os.makedirs
os.path.join 拼接路径

time

time.time() 获取时间戳
time.sleep() 等待秒数
time.timezone() 获取时区

datatime

datetime.datetime.now() 获取当前时间
datetime.datetime.utcnow() 获取当前UTC时间
datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S') 根据指定格式打印当前时间

获取指定时区时间
from datetime import datetime,timezone,timedelta
time_zone = timezone(timedelta(hours=1))
time_zone_now = datetime.now(time_zone)
print(time_zone_now)
> 2020-05-17 06:22:23.753217+01:00
字符串转化为datetime
from datetime import datetime
str_time = '2011-11-11'
date_time = datetime.strptime(str_time,'%Y-%m-%d')
print(date_time)
时间加减
from datetime import datetime,timedelta
now_time = datetime.now()
relative_time = timedelta(days=12)
result_time = now_time + relative_time
print('{}\n{}'.format(now_time,result_time))
> 2020-05-17 13:56:45.864314
  2020-05-29 13:56:45.864314
时间戳与datetime的关系
#时间戳转化为本地时间
import time
from datetime import datetime
ctime = time.time()
now_time = datetime.fromtimestamp(ctime)
print(ctime,now_time)
> 1589695409.8007972 2020-05-17 14:03:29.800797
#再将本地时间转化为时间戳
new_ctime = now_time.timestamp()
print(new_ctime)
>1589695409.8007972

shutil

shutil.rmtree 删除目录,没有返回值
shutil.move 重命名文件名或目录名
shutil.copyfile(src.file,des.file) 将src.file文件拷贝为des.file
shutil.copymode() 只拷贝权限
shutil.copy() 拷贝文件和权限
shutil.make_archive('base_name','format','root_dir') 将root_dir目录以fromat的格式压缩为base_name.zip
shutil.unpack_archive('archive_name','des_dir') 将压缩包archive_name解压到des_dir目录下,如果目标目录不存在则新建

getpass

getpass.getpass

random

random.randint(1,100) 获取1-100的随机数

hashlib

hashlib.md5('加盐字符串').update('要加密的字符串').hexdigest() 字符串md5加密

def md5_encry(data,fuse='md5encryption'):
	import hashlib
	obj = hashlib.md5(fuse.encode('utf-8'))
	obj.update(data.encode('utf-8'))
	encry_result = obj.hexdigest()
	return encry_result

requests

requests.get(url) 请求url
requests.get(url).text 请求url的文本内容

posted @ 2020-05-17 14:59  zoer  阅读(162)  评论(0编辑  收藏  举报