mahsiaoko / backend

0 stars 0 forks source link

Python os.path() 模块 #1

Open mahsiaoko opened 5 years ago

mahsiaoko commented 5 years ago
方法 说明
os.path.abspath(path) 返回绝对路径
os.path.basename(path) 返回文件名
os.path.dirname(path) 返回文件路径
os.path.split(path) 把路径分割成 dirname 和 basename,返回一个元组
os.path.join(path1[, path2[, ...]]) 把目录和文件名合成一个路径
os.path.realpath(path) 返回path的真实路径
os.path.relpath(path[, start]) 从start开始计算相对路径
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
file='/root/runoob.txt' # 文件路径
print( os.path.basename('/root/runoob.txt') )   # 返回文件名    runoob.txt
print( os.path.dirname('/root/runoob.txt') )    # 返回目录路径   /root
print( os.path.split('/root/runoob.txt') )      # 分割文件名与路径  ('/root', 'runoob.txt')
print( os.path.join('root','test','runoob.txt') )  # 将目录和文件名合成一个路径  root/test/runoob.txt
print( os.path.abspath(file) )   # 输出绝对路径  /root/runoob.txt

realpath和abspath的区别:

os.path.realpath(file) f:\work\tmp\test.py

os.path.abspath(file) f:\work\tmp\test.py


- 不同点
example:
file_a
file_b -> file_a # 软连接指向a
>>> import os

>>> os.path.abspath(file_b)
/tmp/file_b

# 会得到指向的文件的路径
>>> os.path.realpath(file_b)
/tmp/file_a

在Django的settings.py中,有这样一个路径:

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

image

现在分析如下:

  1. os.path.abspath(file)返回的是.py文件的绝对路径,也就是settings.py这个文件路径
  2. os.path.dirname(os.path.abspath(file)),也就是settings.py这个文件的目录,我们这里是MxShop这个目录
  3. BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))就是MxShop这个目录所在的目录,也即vueShop所在的目录。