模块(module)
开发过程中,代码会越来越长,若各直接放在一个文件里,代码会越来越长.—>不易维护.
为了编写方便维护的代码,可以吧不同功能的代码分组,保存在不同的文件里.这样,每个文件包含的代码量会比较少,更方便维护.
在python中,一个.py文件就可以称之为一个模块
即:
-
包含相应功能的函数以及变量,py则以".py"为后缀名;
-
模块可以为其他的程序引用,以使用该模块所对应的函数或者变量.
使用的模块的优点:
- 提高代码的可维护性
- 提高代码的复用性
- 可以带入很多功能的模块
-
- 标准库模块
- 第三方模块
- 自定义模块
- 避免变量名重复(作用域)
python中导入模块的常用方式:
import 模块名称
import 模块名称 as 新名称
from 模块名称 import函数名
区别:
-
import 模块名称 和 import 模块名称 as 新名称
-
- 会导入整个模块
- 如果我们需要使用某个模块,必须以"模块名称.函数名()"的形式来调用相应的函数.(这种方法可以更有利于代码的可读性(优先推荐的方法))
- import 模块名称 as 新名称 ,重写命名导入的模块,通常使模块名称简介,方便使用.
-
from 模块名称 import函数名
-
- 只导入某一函数,而不是整个模块
- 可以直接函数名称去调用函数,而无需再函数名称前加模块名称
- 如果我们的程序语句很多,不建议采用此方法(原因:调用很多模块后,可能造成函数名称重名,引发错误.)
import…
import…as…
from … import
注意:
import语句的对应模块顺序(PEP)
- python标准模块
- 第三方
- 自定义模块
自定义模块
os 模块
os 模块是python标准库中用于访问操作系统功能模块.
使用os模块提供的借口,能够实现跨平台访问.
最常见的操作:
- 目录的操作
- 判断
1.系统操作
- os.sep:用于查看系统路径的分割符;
-
- Windows–>"\"
- ubuntu—>"/"
- os.name:
- 显示我们正在使用的平台
-
- Windows—>‘nt’
- Linux/Unix—>‘posix’
- os.getenv() —>读取环境变量(envirnment)
- os.getcwd()—>获取当前路径
2.目录操作—增删改查(direction)
-
os.listdir():返回指定目录下的所有文件和目录
-
os.listdir() #未指定路径,当前路径下 ['.idea', 'data', 'day01.py', 'day02_字符串.py', 'day02_流程控制.py', 'day03.py', 'day04.py', 'day5_0722_文件操作.py', 'day5_0722模块.py', '__pycache__']
-
目录的创建
-
- os.mkdir(path) :创建目录,单仅创建一级目录,
- os.makedirs(path):创建目录,创建多级目录
os.mkdir("os_test")
os.makedirs("main_file/sub_file")
- 目录/文件删除
-
- os.rmdir(path):删除目录(一级)
- os.removedirs(path):删除空目录(多级)
- os.remove(path):删除文件,必须是文件
os.rmdir("os_test")
os.remove("main_file/sub_file")
os.remove("main_file/新建文本文档.txt")
-
更改路径
-
- chdir(path):change direction #将当前工作目录更改到指定的工作目录
- os.rename(old_name,new_name)
os.getcwd() os.chdir('..') #两个点表示返回上一级目录 os.listdir('D:\\NEWS Por\\0722作业\\genggai') os.rename('data.txt','data.md')
3. 判断文件
- os.path.exist(path):判断文件或者目录是否存在,存在,True;否则,False.
print(os.path.exists("day5_0722模块.py"))
#True
- os.path.isfile(path):判断是否为文件,是:true;否:False.
print(os.path.isfile('data'))
#False
- os.path.isdir(path):判断是否为目录,true/false
print(os.path.isdir('data'))
#True
拓展:
- os.path.dirname(path):返回文件路径;
- os.path.basename(path):返回文件名称;
- os.path.getsize(name):返回文件大小;
- os.path.abspath(name):返回文件的绝对路径
- os.path.join(path,name):连接目录与文件名或者目录
- os.path.split(path):将path的目录和文件名分开,并返回元祖
>>> os.path.dirname("D:\\NEWS Por\\day01.py")
'D:\\NEWS Por'
>>> os.path.basename("D:\\NEWS Por\\day01.py")
'day01.py'
>>> os.path.getsize("day03.py")
2872
>>> os.path.abspath("day01.py")
'D:\\NEWS Por\\day01.py'
>>> os.path.join("../NEWS Por","day01.py")
'../NEWS Por\\day01.py'
>>> os.path.split("D:\\NEWS Por\\day01.py")
('D:\\NEWS Por', 'day01.py')
- 查看文件的时间
- os.path.getmtime(path):返回文件或者目录的最后修改时间,结果为秒数 —>modify
- os.path.getatime(path):返回文件或者目录的最后访问时间,结果为藐视
- os.path.getctime(path) :返回文件或者目录的创建时间
import os
import time
print(os.path.getmtime("day01.py"))
timeArray = time.localtime(os.path.getmtime("day01.py"))
otherStyleTime = time.strftime("%Y-%m-%d %X", timeArray)
print(otherStyleTime)
1563323957.836487
2019-07-17 08:39:17
-
获取文件和目录
- os.walk(path):通过在目录树中游走输出在目录中的文件名
>>> import os >>> paths = os.walk("..") >>> for i in paths: ... print(i) ... ('..', ['.idea', 'data', '__pycache__'], ['day01.py', 'day02_字符串.py', 'day02_流程控制.py', 'day03.py', 'day04.py', 'day5_0722_文件操作.py', 'day5_0722模块.py']) ('..\\.idea', ['inspectionProfiles'], ['misc.xml', 'modules.xml', 'NEWS Por.iml', 'workspace.xml']) ('..\\.idea\\inspectionProfiles', [], []) ('..\\data', [], ['GreenFlowerPorcelain.txt', 'test.txt', '城市学院.txt', '陈明明.txt', '青花瓷.txt']) ('..\\__pycache__', [], ['day5_0722模块.cpython-36.pyc']) >>>