模块和包
在 Python 中,一个 py
文件就是一个模块,一个包含 __init__.py
文件的目录就是一个包。
如果在当前模块执行它自己的代码,它的 __name__
就是 __main__
,如果它是被导入执行的,他的 __name__
就是导入方的文件名。
所以在测试当前模块时,通常写 if __name__ == "__main__"
。
模块搜索路径
在像这样导包的时候 from pk.a.b import c
,Python 解释器搜索包的方法是这样:
- 当前目录是否有
pk
这个包 - Python 内置模块是否有
pk
这个包 - 当前虚拟环境是否安装了
pk
这个包,当前虚拟环境路径都可以用sys.path
来查看,它记录了当前环境的所有环境变量路径。
变量权限
Python 通过在变量前加下划线 _
来将变量区分公开或私有。
变量形式 | 权限 | 说明 |
---|---|---|
num | 公开 | 自己随便定义 |
__num__ | 公开 | 特殊变量,自定义一般不使用 |
_num | 私有 | 不应该被直接引用 |
私有变量技术上仍可以访问,这是一种约定俗成的写法。
读取脚本参数
如果写好了一个脚本 manage.py
,运行它一般要执行命令 python manage.py
。
大部分的脚本要支持添加参数,比如这样:python manage.py -i arg1 -u arg2
。
要读取参数,需要用到 sys.argv
。
manage.py
内容为这样:
import sys
args = sys.argv
print(args)
运行:
python manage.py -i arg1 -u arg2
['manage.py', '-i', 'arg1', '-u', 'arg2']
读取系统信息
系统类型
import os
print(os.name) # posix 是类unix系统,nt为windows系统
系统详细信息
import os
print(os.uname())
"""
posix.uname_result(sysname='Linux', nodename='xxx', release='xxx', version='xxx', machine='x86_64')
"""
系统环境变量
import os
print(os.environ) # 包括 PATH 等等环境变量,字典格式
"""
environ({'PATH': 'xx/xx/xx'})
"""
print(os.environ.get("PATH")) # xx/xx/xx
创建文件或目录
获取当前目录绝对路径
curt_abs = os.path.abspath(".")
print(curt_abs) # /root/xxx
拼接目录
new_path = os.path.join(curt_abs, "new_path")
print(new_path) # /root/note/new_path
创建目录
os.mkdir(new_path)
删除目录
os.rmdir(new_path)
分割目录路径
# new_path = "/root/note/new_path"
path_sp = os.path.split(new_path)
print(path_sp) # ('/root/note', 'new_path')
获取文件扩展名
# new_path = "/root/note/new_path.txt"
file_msg = os.path.splitext(new_path)
print(file_msg) # ('/root/note/new_path', '.txt')
文件重命名
os.rename("a.txt", "b.txt") # 当前目录下
删除文件
os.remove("c.txt")
复制文件
from shutil import copyfile
copyfile("a.txt", "d.txt")
(本文完)