前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python-模块

python-模块

作者头像
py3study
发布2020-01-16 17:35:53
6220
发布2020-01-16 17:35:53
举报
文章被收录于专栏:python3python3

一:模块的基本认识:

内置模块

  • 内置模块是python自带的功能,在使用内置模块相应功能时,需要先导入再使用  

 第三方模块

  • 下载-->安装-->使用

代码语言:javascript
复制
1.找到python所在的根目录-->再找到Scripts目录-->最后找到pip.exe
2.把pip.exe所在的目录添加到环境变量中
3.pip install 要安装的模块名称   #pip install xlrd

#安装完成后,如果导入不成功
    - 重启pycharm
     - 安装错了 

自定义模块

  • 自己写一个模块(一个py文件) :

代码语言:javascript
复制
def f1():
    prinrt('f1')
def f2():
    print('f2')

  • 在另一个py文件中调用模块中的功能 :a1.py

代码语言:javascript
复制
#调自定义模块中的功能
import aaa
aaa.f1()
aaa.f2()
 
代码语言:javascript
复制
a1.py 

二:模块的调用

1.示例一:

代码语言:javascript
复制
# xxx.py

def show():
    print('nihao')
def func():
    pass

print(111)
代码语言:javascript
复制
#导入模块,加载此模块中的所有值到内存(一)
import xxx
print(222)
##调用模块中的函数
xxx.func()
代码语言:javascript
复制
#导入模块(二)
from xxx import func,show
from xxx import func
from xxx import *
func()
代码语言:javascript
复制
#导入模块(三)
from xxx import func as f  #起别名
def func():
    print(222)
f()

2.示例二:

代码语言:javascript
复制
xxxxxx  #(某个文件夹)
   -jd.py  #里面有个f1函数
   -tb.py
   -pdd.py
代码语言:javascript
复制
import xxxxxx.jd
jd.f1()
代码语言:javascript
复制
from xxxxxx import jd
jd.f1()
代码语言:javascript
复制
from xxxxxx.jd import f1
f1()

3.总结

模快和要执行的py文件在同一目录且需要模块中的很多功能时,推荐使用:import 模块

  • 其他推荐:from 模块 inport 模块 模块.函数()
  • 其他推荐:from 模块.模块 import 函数()

三:内置模块及其使用方法

  • .random
代码语言:javascript
复制
#获取6个Unicode对应表中十进制相对应的数据

import random   

def get_random_code(length = 6):
    data = []
    for i in range(length):
        v = random.randint(65,90)
        data.append(chr(v))
    return  ''.join(data)
code = get_random_code()
print(code)
 
 
代码语言:javascript
复制
import random # 导入一个模块
v = random.randint(起始,终止)  #得到一个随机数
  • .hashlib :用于加密相关的操作,代替了md5模块和sha模块
  • 将指定的'字符串'进行加密
代码语言:javascript
复制
import hashlib
def get_md5(num):
    obj = hashlib.md5()
    obj.update(data.encode(utf-8))
    result = obj.hexdigest()
    return result
val = get_md5('某段数字')
print(val)
  • 加盐 : (让密码更加安全)
代码语言:javascript
复制
import hashlib

def get_md5(data):         # md5括号内的内容越长,越不容易被破解
    obj = hashlib.md5("sidrsicxwersdfsaersdfsdfresdy54436jgfdsjdxff123ad".encode('utf-8'))
    obj.update(data.encode('utf-8'))
    result = obj.hexdigest()
    return result

val = get_md5('123')
print(val)
 
 
  • sys : python解释器相关的数据
    • sys.getrefcount : 获取一个值的应用计数
代码语言:javascript
复制
import sys  #导入模块
a = [1,2,3]
b = a
print(sys.getrefcount(a)) 
#结果为:3   相当于a被使用了三次
代码语言:javascript
复制
import sys 
print(sys.getrecursionlimit())
# 结果为 :1000
 
 

#请将第二个参数中的内容写入到 文件(第一个参数)中

代码语言:javascript
复制
import sys

if len(sys.argv) < 3:
    print('参数不够,请重新运行')
else:
    file_path = sys.argv[1]
    content = sys.argv[2]
    with open(file_path,mode='w',encoding='utf-8') as f:
        f.write(content) 
 
 
代码语言:javascript
复制
import sys
sys.path.append('D:\\')
import oldboy
 
  • os : 和操作系统相关的数据
    • os.path.exists(path) , 如果path存在,返回True;如果path不存在,返回False
    • os.stat('某个文件').st_size : 获取文件大小
    • os.path.abspath() : 获取一个文件的绝对路径
代码语言:javascript
复制
path = '某个需要查看路径的文件' 

import os
v1 = os.path.abspath(path)
print(v1)  # 这个文件所在的全部目录
 
  
 
代码语言:javascript
复制
import os
v = r"C:\python36\新建文件夹\python36.exe D:/第三周/day14.py"
print(os.path.dirname(v))

#C:\python36\新建文件夹\python36.exe D:/第三周   一级一级往上走 
 
代码语言:javascript
复制
import os
path = "C:\python36\新建文件夹\python36.exe" 
v = 'n.txt'

result = os.path.join(path,v)
print(result)
#C:\python36\新建文件夹\python36.exe \n.txt

result = os.path.join(path,'n1','n2','n3')
print(result)
#C:\python36\新建文件夹\python36.exe \n1\n2\n3
 
 
代码语言:javascript
复制
import os
result  = os.listdir(r'D:\untitled')
for i in result:
    print(i)
 
 
代码语言:javascript
复制
import os

result = os.walk(r'D:\untitled')
for a,b,c in result:
    # a,正在查看的目录 b,此目录下的文件夹  c,此目录下的文件
    for item in c:
        path = os.path.join(a,item)
        print(path)
 
 
  • os.rename 重命名
代码语言:javascript
复制
import os
os.rename('某个文件的名字','想要修改后的名字')
 
 
代码语言:javascript
复制
import os
#1.读取文件大小(字节)
file_size = os.stat('某个文件').st_size
#2. 一点一点读取文件
read_size = 0
with open('某个文件',mode='rb') as f1,open('将要写入的文件',mode='wb') as f2:
    while read_size < file_size:
        chunk = f1.read(1024) #每次最多去读取1024字节
        f2.write(chunk)
        read_size += len(chunk)
        val = int(read_size / file_size * 100)   #查看打印进度
        print('%s%%\r' %val ,end='')
 
  • json&pickle
    • json : 一个特殊的字符串 [长得像列表/字典/字符串/数字/真假]
      • 优点:所有语言通用;缺点:只能序列化基本的数据类型
      • json.dumps 序列化
      • json.loads 反序列化
    • pickle:优点:python中所有的东西都能被他序列化 缺点:序列化的内容只有python认识
代码语言:javascript
复制
import json
#序列化:将python的值转换为json格式的字符串
v = [11,22,{'k1':'v1'},True,'ggg']
v1 = json.dumps(v)
print(v1)    #"[11, 22, {"k1": "v1"}, true, "ggg"]"

#反序列化 : 将json格式的字符串转换成python的数据类型
v2 = '["alex",123]'
print(type(v2))  #字符串类型
v3 = json.loads(v2)
print(v3,type(v3))   #['alex', 123] <class 'list'>
 
 
代码语言:javascript
复制
v = {'k1':'alex','k2':'李杰'}

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

  • 注意:
    • json 最外层必须是容器类的,如列表/字典,元组会被转换为列表.
    • 里面的内容可以是:str int bool list tuple 集合不能存在于json中
    • 字串必须使用双引号(" ")连接

  • shutil
    • 删除目录
代码语言:javascript
复制
import shutil
shutil.rmtree('要删除的目录')
 
代码语言:javascript
复制
import shutil
shutil.move('原目录','修改后的目录')
  
 
代码语言:javascript
复制
import shutil
shutil.make_archive('要压缩的文件','文件的后缀名(如zip)','要压缩到的路径')
 
 
代码语言:javascript
复制
import shutil
shutil.unpack_archive('要解压的文件',extract_dir=r'D:\code\xxxxxx\xxxx',format='zip')
 
  • time&datetime
    • UTG/GMT 世界时间
    • 本地时间 本地时区的时间
    • time :
      1. time.time() 时间戳(获取当前时间) 从1970-1-1 00:00 后走过的秒数
      2. time.sleep(8) 等待的秒数
    •  获取datetime格式时间
代码语言:javascript
复制
import time
from datetime import datetime,timezone,timedelta

v1 = datetime.now()  # 获取当前本地时间
print(v1)            # 2019-04-18 16:39:31.802269

tz = timezone(timedelta(hours=7)) #当前东7区时间  (如要获取西7区时间 hours=-7)
v2 = datetime.now(tz)
print(v2)         #2019-04-18 15:39:31.802269+07:00   (中国在东8区,所以慢一个小时)

v3 = datetime.utcnow()    #当前UTC时间(世界时间)
print(v3)                 #2019-04-18 08:39:31.802269  (比中国时间慢8个小时)
 
  
 
代码语言:javascript
复制
import time
from datetime import datetime,timezone,timedelta

v1 = datetime.now()
val = v1.strftime("%Y-%m-%d %H:%M:%S")  #(年-月-日 时:分:秒)
print(val)    #2019-04-18 16:48:29
代码语言:javascript
复制
import time
from datetime import datetime,timezone,timedelta

v1 = datetime.strptime('2019-4-18','%Y-%m-%d')
print(v1,type(v1))  # 2019-04-18 00:00:00 <class 'datetime.datetime'>
代码语言:javascript
复制
import time
from datetime import datetime,timezone,timedelta

v1 = datetime.strptime('2008-08-08','%Y-%m-d')   
v2 = v1-timedelta(days=150)   #括号里的内容可以是:(year+或-  month+或-)
data = v2.strftime('%Y-%m-%d')
print(data)  #2008-03-11

#先转换为datetime格式进行加减,然后转换为字符串格式打印出来
  
代码语言:javascript
复制
import time
from datetime import datetime,timezone,timedelta

ctime = time.time()
print(ctime)  # 1555578896.8276453
v1 = datetime.fromtimestamp(ctime)
print(v1) # 2019-04-18 17:14:56.827645

v1 = datetime.now()
val = v1.timestamp()
print(val)  #1555579030.002739
 

 四:异常处理

代码语言:javascript
复制
#固定搭配

 try:


 except Exception as e:
代码语言:javascript
复制
#写函数去,接受一个列表。列表中都是url,请访问每个地址并获取结果。
import requests 
def func(url_list):
    result = []
    try:
        for url in url_list:
            response = requests.get(url)
            result.append(response.text)
    except Exception as e:
        pass
    return result    #['http://www.baidu.com']  (中国无法访问谷歌)

def func2(url_list):
    result = []
    for url in url_list:
        try:
            response = requests.get(url)
            result.append(response.text)
        except Exception as e:
            pass
    return result   #['http://www.baidu.com','http://www.bing.com']

func(['http://www.baidu.com','http://www.google.com','http://www.bing.com']) 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-05-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一:模块的基本认识:
  • 二:模块的调用
  • 三:内置模块及其使用方法
  •  四:异常处理
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档