一. 模块
在 Python 中,一个.py文件就称之为一个模块(Module)
分类:
内置模块:
第三方模块(非官方的比较好的开源模块,网址:pypi.python.org,安装时为pip install 模块名)
自定义模块
1. 创建模块
编写python脚本
2. 导入模块
1>import 脚本名称
注:模块命名尽量短小,采用全部小写的方式,可以使用下划线
2>import as
3>from import
优点:
1>提高了代码的可维护性
2>编写代码不必从零开始,当一个模块编写完毕,就可以被其他地方引用
注:__future__模块的作用:在就版本中体验新版本的特性
3. 模块的作用域
模块中正常的函数和变量名是功用的,在python中,当有些函数和变量不希望被别人使用时,通过 _ 前缀来实现,比如__author__ , __name__就是特殊变量的,__func__,__fun为私有函数,不能直接引用
二. 常用模块
1. os模块
os.name #当前所在平台,“linux-posix” “windows-nt”
os.getcwd() #获取当前所在绝对路径
os.listdir() #列出给定目录的内容
os.mkdir() #创建指定目录
os.rmdir() #删除指定目录
os.environ #对环境变量的操作
os.access(path,mode) #判断对一个文件或者目录是否具有指定的权限,mode 参数的可选值: R_OK, W_OK, 和 X_OK
os.stat() #相当于 Linux 下 stat 命令
eg:
使用 Python 执行 Linux 命令
os.system , 并没有返回值,是靠副作用产生输出的
os.popen 返回一个文件对象
os.popen2 返回两个文件对象,一个是 stdin, 一个是 stdout
os.popen3 返回三个文件对象 :stdin,stdout,stderr
附:os.path模块
os.path 是os 的一个子模块 , 主要是对路径进行解析、创建、测试和其他的一些操作,封装了不同平台的路径操作
路径解析:
os.path.split()
os.path.basename()
os.path.dirname()
os.path.isabs()
os.path.isdir() #判断是否是目录
os.path.isfile() #判断是否是文件
os.path.islink() #判断是否是链接
2. sys模块
sys 模块主要提供了系统相关的配置和操作,封装了探测、改变解释器runtime 以及资源的交互
sys.version #得到解释器的版本信息
sys.platform #得到当前运行平台
sys.argv #获取传递给脚本的参数,参数解析类似于 bash 的方式,第一个参数代表脚本本身
sys.path #Python在指定的路径下搜索模块与包对应的路径
sys.path.append() #添加搜索模块与包的路径
sys.path.remove() #指定删除搜索模块与包的路径
sys.path.insert() #指定位置添加索模块与包的路径
eg1:
要求1:用户输入参数大于2,在当前目录创建目录hello1和hello2
要求2:用户输入参数等于1,显示当前目录下的所有文件
要求3:无参数输入,显示当前目录下的所有目录信息(同linux的stat)
测试:
3. random模块
random.randint() #随机产生指定范围的字符
random.random() #随机产生0到1之间的小数
random.uniform() #随机产生指定范围的小数
random.randrange() #随机产生指定范围字符
random.choice() #随机在给定范围产生一个
random.sample() #随机在给定范围产生多个
random.shuffle() #随机打乱
eg1:生成一个包含4个字符的随机验证码,(由数字和字母组成)
eg2:编写一个makepass模块,实现功能为为系统管理员创建的新用户帐号分配一个不同的完全随机的密码
4. time模块
time.time() #时间戳
time.localtime() #将时间戳转化为元组格式时间
time.ctime() #时间戳转化为字符串格式显示
time.strftime() #将元组格式时间转化为字符串显示
time.strptime() #将字符串显示转化为元组格式时间
time.mktime(t) #将元组格式时间转化为时间戳,但元组长度必须为9
time.sleep() #等待时长
time.strftime("%Y-%m-%d %X", time.localtime())
模块编写注意事项:
当模块直接运行时,__name__值为__main__,当是import导入时,其值为模块名称,通常利用if __name__ == "__main__":判断
二. 包
1. 创建包
1>创建一目录为包名
2>在该目录下创建__init__.py文件存放包的信息,该文件可以为空
注:包命名时尽量短小,使用全部小写的方式,不可以使用下划线
2. 调用包