基础知识
我们需要了解一些基础的知识
例如↓
__file__ -> 当前文件位置
if:当前文件处在 sys.path 下 # 也就是存储python环境变量的地方
__file__ -> 相对路径
else:绝对路径
字符串前加r -> 按照字符串本意进行使用
文件路径后返回的\.. -> 表示上一级文件
list.insert(位置,参数) -> 在列表指定位置前插入参数
os模块中:
os.path.abspath(path) # 返回path规范化的绝对路径
os.path.normpath(path) # 将path路径输出规范化
# 也就是说,所有\\//都统一为\,\..直接返回上一级文件的路径
os.path.join # 将多个路径组合后返回,第一个绝对路径之前的参数将被舍弃
# 将多个路径整合为一个路径
os.path.dirname(path) # 返回path的上一级路径
os.path.split(path) # 将path路径分割成目录和文件名,返回元组
os.pardir # 获取当前目录的父目录字符串名,也就是'..'
sys模块中:
sys.path # 存储python环境变量,返回值是列表
获取文件上一级目录方法
方法一
path = os.path.dirname(os.path.dirname(__file__))
# 一个dirname就代表当前文件所在目录,两个就代表是当前文件所在目录的上一级,以此类推
sys.path.insert(path) # 将获取的路径存入环境变量
方法二
path = os.path.normpath(
os.path.join(
os.path.abspath(__file__),
os.pardir,
os.pardir
))
# os.path.abspath(__file__)返回的是当前文件的绝对路径
# os.pardir返回的是'..',而\..代表上一级文件
# 经过os.join将其组合起来后,每个之间都加上了\号,也就满足了\..代表上一级文件这个条件
# 再经过os.path.normpath将路径规范化,\..直接返回上一级路径
# 一个os.pardir代表当前文件所在目录,两个os.pardir代表当前文件所在目录的上级目录
sys.path.insert(path) # 将获取的路径存入环境变量
方法三
path = os.path.normpath(
os.path.join(
os.path.split(__file__)[0],
os.pardir,
))
# os.path.split(__file__)返回的是当前文件路径的目录和文件名组成的列表,在其后加上[0]代表取其目录
# os.pardir返回的是'..',而\..代表上一级文件
# 经过os.join将其组合起来后,每个之间都加上了\号,也就满足了\..代表上一级文件这个条件
# 再经过os.path.normpath将路径规范化,\..直接返回上一级路径
# 一个os.pardir代表当前路径的上级目录
sys.path.insert(path) # 将获取的路径存入环境变量
方法四
path = os.path.normpath(
os.path.join(
os.path.dirname(__file__),
os.pardir,
))
# os.path.dirname(__file__)返回的是当前文件所在目录
# os.pardir返回的是'..',而\..代表上一级文件
# 经过os.join将其组合起来后,每个之间都加上了\号,也就满足了\..代表上一级文件这个条件
# 再经过os.path.normpath将路径规范化,\..直接返回上一级路径
# 一个os.pardir代表当前路径的上级目录
sys.path.insert(path) # 将获取的路径存入环境变量
总结
方法一不推荐使用,反复使用代码导致冗余
方法二三四基本都一致,在join内的代码有些许不一致,可按自己的习惯使用