模块(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() —> 读取环境变量 (environment)
-
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_fiel")
- 目录/文件删除
- os.rmdir(path):删除空目录(一级)
- os.removedirs(path):删除空目录(多级)
- os.remove(path):删除文件
os.rmdir("os_test")
os.remove("main_file/sub_file")
os.remove("main_file/新建文本文档.txt")
- 更改路径/更改文件名称
- os.chdir():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')
判断文件
- os.path.exists(path) :判断文件或者目录是否存在,True/False
print(os.path.exists("day5_0722模块.py"))
#True
- os.path.isfile(path):判断是否为文件
print(os.path.isfile('data'))
#False
- os.path.isdir(path):判断是否为目录
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):返回元组(目录,文件名)
>>> 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'])
>>>