什么是模块
在Python中,模块其实也就是包含python代码的文件,我们为什么要使用模块?在我们以后写代码的时候,我们会发现有很多功能需要经常使用,那我们想要使用这些功能怎么办,要再把那些代码在敲一遍吗,这样不但增加了代码量,还浪费了时间,有人说我们可以写在函数里,是的,我们可以把一些功能写在函数里,使用的时候调用函数就行了,但是我们每次新建一个文件的时候,都需要再次将那些功能函数写一遍,还是有些麻烦,这时候,模块的便捷就体现出来了,我们将大量功能函数写在一个py文件里,当我们需要用到部分功能的时候,将这个文件(模块)导入一下,就可以轻松地调用里面的函数了。当然模块中不仅可以写函数,也可以写类。
模块的调用
1.import语句,用于导入整个模块
import module1import module as module_a#给导入的模块自定义一个别名import sysimport time as ti
2.form..import,用于导入模块的某一部分功能或模糊导入from module import namefrom random import *#导入random中所有属性
使用import导入模块内部机制
import语句导入指定的模块时会执行3个步骤
1. 找到模块文件:在模块搜索路径下搜索模块文件
程序的主目录
PYTHONPATH目录
标准链接库目录
2.编译成字节码:文件导入时会编译,因此,顶层文件的.pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件
3.执行模块的代码来创建其所定义的对象:模块文件中的所有语句从头至尾依次执行,而此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件的属性
注意:模块只在第一次导入时才会执行如上步骤,后续的导入操作只不过是提取内存中已加载的模块对象,reload()可用于重新加载模块
自定义模块
所谓的自定义模块就是自己创建一个python文件,在里面写入了一些函数或者类,在自己定义文件名的时候,注意不能把自己文件的名字定义和已经存在的模块的名字重复,否则导入模块的时候可能导入的模块不是你想要的模块。
先在一个.py文件内写一个函数,然后再另一个文件内import 文件名,然后再写使用文件名.函数名调用函数。1234import 文件名 文件名.函数名()
导入模块时需要根据sys.path的路径找,为了我们自定义的模块可以成功导入,我们需要把自己写的py文件的路径添加到sys.path。import sys
sys.path.append("d:")#这个"d:"是你py文件放置的位置
查看模块搜索路径有哪些,自己添加的路径是否在搜索路径中。import sysfor i in sys.path: print(i)
内置模块
内置模块是python自带功能,使用的时候直接使用import或者from..import导入模块即可。
python中有哪些内置模块,接下来就介绍一下:
一、OS
用于提供操作系统级别的操作
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dir1/dir2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","new") 重命名文件/目录 * os.stat('path/filename') 获取文件/目录信息
import os
info = os.stat("D:\\文件名,需带后缀")
print(info)
os.sep 操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep 用于分割文件路径的字符串
os.name 字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
import os
os.system("shell命令")
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回 * os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。
即os.path.split(path)的第二个元素 * os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False * os.path.join(path1[, path2[, ...]])** 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
import os
str1 = "D:"
str2 = "home"
str3 = "index"
n = os.path.join(str1,str2,str3)
print(n)
#结果 #自己根据顺序添加分割符 D:home\index
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间