第30讲:文件系统——介绍一个高大上的东西
作者:互联网
一 模块的基本概念
定义:Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
2 功能:
- 模块让你能够有逻辑地组织你的 Python 代码段。
- 把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
- 模块能定义函数,类和变量,模块里也能包含可执行的代码。
3 创建:将所需代码保存在文件扩展名为 .py 的文件中的过程即为创建模块的过程
4 导入:我们可以通过 import 语句来导入我们创建的模块
- import 模块名1 [as 别名1], 模块名2 [as 别名2],…
- 特点:
- 使用这种语法格式的 import 语句,会导入指定模块中的所有成员(包括变量、函数、类等)
- 当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。
- 常见格式:
- import 模块名:最简单的语法,导入整个模块
- import 模块名 as 别名:导入整个模块时,也可以为模块指定别名。
- import 模块名1,模块名2:一次导入多个模块,多个模块之间用逗号隔开。
- import 模块名1 as 别名1,模块名2 as 别名2:在导入多个模块的同时,也可以为模块指定别名
- from import 语句:from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…
- 特点:
- 使用这种语法格式的 import 语句,只会导入模块中指定的成员,而不是全部成员。
- 当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。
- 常见格式:
- from 模块名 import 成员名:最简单的语法,导入指定成员
- from 模块名 import 成员名 as 别名:导入模块成员时,也可以为成员指定别名
- from 模块名 import 成员名1,成员名2:from...import 导入模块成员时,支持一次导入多个成员
- from 模块名 import 成员名1 as 别名1,成员名2 as 别名2:一次导入多个模块成员时,也可指定别名,同样使用 as 关键字为成员指定别名
- from 模块名 import *:一般不推荐使用“from 模块 import *”这种语法导入指定模块内的所有成员,因为它存在潜在的风险。当两个不同模块中出现同名函数时,调用该函数会出现问题
5 reload()函数:
- 功能:该函数会重新导入之前导入过的模块
- 语法:reload(module_name)
- 应用场景:当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次。如果想重新执行模块里顶层部分的代码,可以用 reload() 函数
- 环境变量PYTHONPATH的相关内容:
6 PYTHONPATH变量:环境变量PYTHONPATH 由装在一个列表里的许多目录组成。
7 模块搜索路径:当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
- 1、当前目录
- 2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
- 3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
8 解决“Python找不到指定模块”的方法有 3 种:
- 1 向 sys.path 中临时添加模块文件存储位置的完整路径;
- 2 将模块放在 sys.path 变量中已包含的模块加载路径中;
- 3 设置 path 系统环境变量。
9 查看成员:
- dir()函数:
- 功能:查看某指定模块包含的全部成员(包括变量、函数和类),语法:dir(模块名)
- dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。
- 返回的列表容纳了在一个模块里定义的所有模块,变量和函数
- 这里所指的全部成员,不仅包含可供我们调用的模块成员,还包含所有名称以双下划线“__”开头和结尾的成员,而这些“特殊”命名的成员,是为了在本模块中使用的,并不希望被其它文件调用。
- _all_变量:
- 借助该变量也可以查看模块(包)内包含的所有成员。模块名.__all__
- __all__ 变量在查看指定模块成员时,它不会显示模块中的特殊成员,同时还会根据成员的名称进行排序显示。
- 并非所有的模块都支持使用 __all__ 变量,因此对于获取有些模块的成员,就只能使用 dir() 函数。
10 命名空间和作用域:
- 变量:指的是拥有匹配对象的名字(标识符)
- 命名空间:是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典。
- 局部命名空间:局部变量的作用域
- 全局命名空间:全局变量的作用域
- 特点:
- 一个 Python 表达式可以访问局部命名空间和全局命名空间里的变量。
- 如果一个局部变量和一个全局变量重名,则局部变量会覆盖全局变量。
- Python 会智能地猜测一个变量是局部的还是全局的,它假设任何在函数内赋值的变量都是局部的。因此,如果要给函数内的全局变量赋值,必须使用 global 语句。
11 globals()函数和locals()函数
- 根据调用地方的不同,globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。
- 如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。
- 如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。
- 两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。
二 一些常见模块
-
- os.getcwd():查看当前所在路径,即返回当前工作目录
- os.listdir(path):列举目录下的所有文件。返回的是列表类型。
- os.chdir(path):改变工作目录
- 2)创建目录
- os.mkdir(path):创建单层目录,如果目录已经存在,抛出异常
- os.makedirs(path):递归创建多层目录,如该目录已存在抛出异常
- 3)删除文件/目录
- os.remove(path):删除文件
- os.rmdir(path):删除单层目录,如目录非空则抛出异常
- os.removedirs(path):递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常
- 4)文件相关
- os.mknod("textt.txt"):创建空文件
- os.stat(file):获取文件属性
- os.chmod(file):修改文件权限/时间戳
- os.rename(old, new):将文件old重命名为new
- 5)遍历目录
- 遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])
- 6)系统相关
- os.exit():终止当前进程
- os.system(command):运行系统的shell命令
- 7)支持所有平台的一些路径操作
- os.curdir:指代当前目录('.')
- os.pardir:指代上一级目录('..')
- os.environ:获取系统环境变量
- os.sep:输出操作系统特定的路径分隔符(Win下为'\\',Linux下为'/')
- os.linesep:当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n')
- os.pathsep:输出用于分割文件路径的字符串 (win下为;,Linux下为:)
- os.name:指代当前使用的操作系统(包括:'posix'——linux/Unix用户, 'nt'——windows, 'mac', 'os2', 'ce', 'java')
2 os.path模块
- 1)查看绝对路径
- os.path.abspath(path):返回path的绝对路径。
- 2)查看路径的文件夹部分和文件名部分
- os.path.split(path):将路径分解为(文件夹,文件名),返回的是元组类型。
- 可以看出,若路径字符串最后一个字符是\,则只有文件夹部分有值;
- 若路径字符串中均无\,则只有文件名部分有值;
- 若路径字符串有\,且不在最后,则文件夹和文件名均有值。且返回的文件夹的结果不包含\.
- os.path.splitext(path):分离文件名与扩展名,返回(f_name, f_extension)元组
- os.path.join(path1,path2,...):将path进行组合,若其中有绝对路径,则之前的path将被删除。
- os.path.dirname(path):返回path中的文件夹部分,结果不包含'\'
- os.path.basename(path):返回path中的文件名。
- os.path.split(path):将路径分解为(文件夹,文件名),返回的是元组类型。
- 3)查看文件时间
- os.path.getmtime(path):文件或文件夹的最后修改时间,从新纪元到访问时的秒数。(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
- os.path.getatime(path):文件或文件夹的最后访问时间,从新纪元到访问时的秒数。(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
- os.path.getctime(path):文件或文件夹的创建时间,从新纪元到访问时的秒数。(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
- 4)查看文件大小
- os.path.getsize(path):文件或文件夹的大小,单位是字节,若是文件夹返回0。
- 5)规范path格式
- os.path.normpath(path):规范path字符串形式
- 6)判断内容,返回True或False
- os.path.exists(path):判断文件或文件夹是否存在
- os.path.isabs(path):判断指定路径是否为绝对路径
- os.path.isdir(path):判断指定路径是否存在且是一个目录
- os.path.isfile(path):判断指定路径是否存在且是一个文件
- os.path.islink(path):判断指定路径是否存在且是一个符号链接
- os.path.ismount(path):判断指定路径是否存在且是一个挂载点
- os.path.samefile(path1, paht2):判断path1和path2两个路径是否指向同一个文件
标签:函数,成员,30,文件系统,高大,模块,import,path,os 来源: https://www.cnblogs.com/luoxun/p/13394254.html