第六章 模块
6.1 模块
-
内置模块,python内部提供过的功能
import sys
-
第三方模块,下载/安装/使用
#吧pip.exe 所在的目录添加到环境变量中
pip install 安装的模块名字 #例如:pip install xlrd
-
自定义模块(自己写的函数)
-
xxx.py
def f1():
print(123)
def f2():
print(125)-
x1.py
#调用自定义函数里面的内容
import xxx
xxx.f1()
xxx.f2() -
6.2 sys
python解释器相关的数据
-
sys.getrefcount,获取一个值得应用计数
-
sys.getrecursionlimit,python默认支持的递归数量
-
sys.stdout.write-->print
#打印进度条
import time
for i in range(1,101):
msg = "%s%%" %i
print(msg,end="")
time.sleep(0.05)
-
sys.argv
#让用户执行脚本传入要删除的文件路径,在内部帮助用户将目录删除
import sys
C:Python36python36.exe D:/code/s21day14/7.模块传参.py D:/test
sys.argv = [D:/code/s21day14/7.模块传参.py, D:/test]
path = sys.argv[1]
impor shutil
shutil.rmtree(path)
-
sys.path,默认pythn去导入模块时,会按照sys.path中的路劲挨个寻找
import sys
sys.path.append('D:\')
import xxx #引用默认路径之外的模块
-
json
json是一个特殊的字符串【长的像列表/字典/字符串/数字/真假】
为什么要这么做:
-
方便除python以外的解释器来运行python编写的代码
-
方便将其他解释器编写的代码,转化成python能识别的东西
import json
#序列化,将python的值转化成json格式的字符串
v = [11,22,4,{"k1":"v2"},True,"saf"]
v1 = json.dumps(v)
print(v1)
#反序列化,将json格式的字符串转化成python的数据类型
v2 = '['alex',123]'
print(type(v2))
v3 = json.loads(v2)
print(v3,type(v3))
6.3 os
-
os.stat('文件名').st_size 读取文件的大小
import os
file_size = os.stat('刘丹妮.mp4').st_size
read_size = 0
with open('刘丹妮.mp4',mode = 'rb') as f1,open('a.mp4',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="")
-
os.path.exists(path) , 如果path存在,返回True;如果path不存在,返回False
-
os.path.abspath() , 获取一个文件的绝对路径
path = '20190409_192149.mp4'
import os
v1 = os.path.abspath(path)
print(v1)
-
os.path.dirname ,获取路径的上级目录
-
import os
v = r"D:codes21day1420190409_192149.mp4"
print(os.path.dirname(v)) -
os.path.join ,路径的拼接
import os
path = "D:codes21day14" # user/index/inx/fasd/
v = 'n.txt'
result = os.path.join(path,v)
print(result)
result = os.path.join(path,'n1','n2','n3')
print(result)
-
os.listdir , 查看一个目录下所有的文件【第一层】
-
import os
result = os.listdir(r'D:codes21day14')
for path in result:
print(path) -
os.walk , 查看一个目录下所有的文件【所有层】
import os
result = os.walk(r'D:codes21day14')
for a,b,c in result:
# a,正在查看的目录 b,此目录下的文件夹 c,此目录下的文件
for item in c:
path = os.path.join(a,item)
print(path)
-
os.makedirs,创建目录和子目录
import os
file_path = r'db/sf/sf/er/xxx.txt'
file_folder = os.patn.dirname(file_path)
if not os.path.exists(file_path)
os.makedirs(file_folder)
with open(file_path,mode='w',encoding='utf-8') as f:
f.write('asdf')
-
os.rename,重命名
import os
os.rename('sb','250')
6.4特殊补充
v1 = r"D:codes21day14
1.mp4" (推荐)
print(v1)
v2 = "D:\code\s21day14\n1.mp4"
print(v2)
#python在执行过程中,对很敏感,如果按照案例中的来写,很容易就系统报错,r的作用是让左右都被认为仅仅只是,区别去
这种
-
shutil
import shutil
shutil.rmtree(path)