Python 中的路径问题

Python中os模块的使用

1. python路径的查看与修改

  • 查看路径:os.getcwd()
  • 修改路径:os.chdir("新的路径名")
import os

# 显示当前路径
os.getcwd()
print('默认路径--> ',os.getcwd())

# 跳转到当前工作路径为
os.chdir("/home/micheal/Desktop")

local_Path = os.getcwd()
print('修改后的文件路径--> ',local_Path)

2.python中的相对路径

print(os.getcwd())
# 相对路径的处理
path1 = os.path.abspath('.') # 表示当前所处的文件夹的绝对路径
path2 = os.path.abspath('./') # ./ 表示当前文件所在的目录(可以省略)
path3 = os.path.abspath('/') # / 表示当前站点的根目录(域名映射的硬盘目录)
path4 = os.path.abspath('../') # ../ 表示当前文件所在的目录的上一级目录

案例1:显示非当前路径下的图片

  • 在项目编写是,程序往往会使用相对路径来进行编程,这样可以保证别人再次运行时不需要考虑文件加载时的路径问题。
  • 假设,当前文件夹下有两个文件夹(Desktop, Pictures),你的程序放在Desktop文件夹下,故运行时的当前路径在Desktop文件夹下。但是你需要加载Pictures目录下的test.jpg图片,此时你可以进行如下操作。
    在这里插入图片描述
import os
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg  # mpimg 用于读取图片

os.chdir("/home/micheal/Desktop") # 跳转到当前工作路径为(实际操作中不需要该步骤)
local_path = os.getcwd() # 获取当前路径(实际操作中不需要该步骤)
abs_path = os.path.abspath(r'../Pictures') # 获得上级目录下Pictures文件夹的绝对路径
image_path = os.path.join(abs_path, r'test.jpg') # 获取 abs_path 文件夹下的test.jpg文件的绝对路径

# 加载和显示图片
img = mpimg.imread(image_path) # 加载图片
print(img.shape) # 显示图片大小
plt.imshow(img) # 显示图片
plt.axis('off') # 不显示坐标轴
plt.show()

注意:以上的操作不会改变当前路径,只会利用相对路径获取到目标文件的绝对路径
在这里插入图片描述

Python中使用sys.path模块 - 动态地改变Python搜索路径

  • sys.path是python的搜索模块的路径集,是一个list。
  • 如果python中导入的package或module不在环境变量PATH中,那么可以使用sys.path将要导入的package或module加入到PATH环境变量中。

查看和添加 sys.path 的路径集

  • 添加路径:sys.path.append(‘你的模块的名称’) 或者 sys.path.insert(0,’模块的名称’)。 前提:import sys
  • 注意:添加相关的路径,但在退出python环境后自己添加的路径就会自动消失!
import sys
import os

os.chdir("/home/micheal/Desktop")  # 设置当前目录(实际操作中不需要该步骤)
print(os.getcwd(), end='\n\n')

# 查看sys.path
# sys.path是python的搜索模块的路径集,是一个list
print("默认路径 --> ", sys.path, end='\n\n')

# 添加相关的路径,但在退出python环境后自己添加的路径就会自动消失!
sys.path.append("../") # 方法1 默认在末尾处添加相对路径
print("append添加路径 --> ",sys.path, end='\n\n')

sys.path.insert(0, os.path.abspath('../')) # 方法2 在sys.path的列表 0 索引添加当前路径的上级目录的绝对路径
print("insert添加路径 --> ",sys.path, end='\n\n')

在这里插入图片描述

案例2:使用sys.path调用非当前路径下的.py文件

  • 在实际编程中,我们往往会将程序分模块放入不同的python文件中。假设,我们在function.py文件中写了一个函数my_max,然后在另外一个文件夹进行导入。则可以使用如下方式:
    在这里插入图片描述
import sys
import os

# 设置当前路径
os.chdir("/home/micheal/Desktop")# 设置当前目录(实际操作中不需要该步骤)
print(os.getcwd())

# 添加路径
sys.path.append("../") # 添加相关的路径,但在退出python环境后自己添加的路径就会自动消失!
print(sys.path)

from Pictures.function import my_max as func
max_return = func(6, 9, 4)
print("三个数中最大的是--> ",max_return)

function.py文件:

# 三个数比较大小
def my_max(a, b, c):
    # 注意Python中没有 a>b?a:b 这样的三目运算符
    max = a if(a>b) else b
    max = max if(max>c) else c
    return max

在这里插入图片描述
在这里插入图片描述

其他注意点:

  • 1)路径书写格式(参考:python中的路径问题汇总

    • windows系统中,’\’与’/’均可以在书写路径中使用,但在字符串里面\被作为转义字符使用
    • 网页网址和linux、unix系统下一般都用’/‘
  • 2)python在描述路径时有两种方式:

    • ‘d:\a.txt’,转义的方式
    • r’d:\a.txt’,声明字符串不需要转义
  • 3)OS模块与sys模块的区别(参考:python中os.path以及sys.path模块简介)

    • os: 这个模块提供了一种方便的使用操作系统函数的方法。
    • sys:这个模块可供访问由解释器使用或维护的变量和与解释器进行交互的函数。
    • 总结就是,os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。
参考博客:
  1. python的sys.path模块路径添加
  2. python中os.path以及sys.path模块简介
  3. 在Python中以绝对路径或者相对路径导入文件的方法
  4. python中路径问题
  • 4
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值