内置模块
第三方模块
1.找到python所在的根目录-->再找到Scripts目录-->最后找到pip.exe
2.把pip.exe所在的目录添加到环境变量中
3.pip install 要安装的模块名称 #pip install xlrd
#安装完成后,如果导入不成功
- 重启pycharm
- 安装错了
自定义模块
def f1():
prinrt('f1')
def f2():
print('f2')
#调自定义模块中的功能
import aaa
aaa.f1()
aaa.f2()
a1.py
1.示例一:
# xxx.py
def show():
print('nihao')
def func():
pass
print(111)
#导入模块,加载此模块中的所有值到内存(一)
import xxx
print(222)
##调用模块中的函数
xxx.func()
#导入模块(二)
from xxx import func,show
from xxx import func
from xxx import *
func()
#导入模块(三)
from xxx import func as f #起别名
def func():
print(222)
f()
2.示例二:
xxxxxx #(某个文件夹)
-jd.py #里面有个f1函数
-tb.py
-pdd.py
import xxxxxx.jd
jd.f1()
from xxxxxx import jd
jd.f1()
from xxxxxx.jd import f1
f1()
3.总结
模快和要执行的py文件在同一目录且需要模块中的很多功能时,推荐使用:import 模块
#获取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)
import random # 导入一个模块
v = random.randint(起始,终止) #得到一个随机数
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)
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)
import sys #导入模块
a = [1,2,3]
b = a
print(sys.getrefcount(a))
#结果为:3 相当于a被使用了三次
import sys
print(sys.getrecursionlimit())
# 结果为 :1000
#请将第二个参数中的内容写入到 文件(第一个参数)中
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)
import sys
sys.path.append('D:\\')
import oldboy
path = '某个需要查看路径的文件'
import os
v1 = os.path.abspath(path)
print(v1) # 这个文件所在的全部目录
import os
v = r"C:\python36\新建文件夹\python36.exe D:/第三周/day14.py"
print(os.path.dirname(v))
#C:\python36\新建文件夹\python36.exe D:/第三周 一级一级往上走
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
import os
result = os.listdir(r'D:\untitled')
for i in result:
print(i)
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)
import os
os.rename('某个文件的名字','想要修改后的名字')
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='')
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'>
v = {'k1':'alex','k2':'李杰'}
import json
val = json.dumps(v,ensure_ascii=False)
print(val)
import shutil
shutil.rmtree('要删除的目录')
import shutil
shutil.move('原目录','修改后的目录')
import shutil
shutil.make_archive('要压缩的文件','文件的后缀名(如zip)','要压缩到的路径')
import shutil
shutil.unpack_archive('要解压的文件',extract_dir=r'D:\code\xxxxxx\xxxx',format='zip')
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个小时)
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
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'>
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格式进行加减,然后转换为字符串格式打印出来
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
#固定搭配
try:
except Exception as e:
#写函数去,接受一个列表。列表中都是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'])