Python中的路径操作

欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/

一、基于Python内部函数的路径操作

1、OS下的路径操作

在不导入包的情况下,基于python内部环境进行文件路径提取,首先导入python自带环境包。

import os  # 这里的os就是operation system的含义

# 获取当前运行文件所在的文件夹路径(当前的工作文件夹路径)
print(os.getcwd())#与.等价
print(os.path.abspath('.'))
# 获取当前运行文件路径
print(os.path.abspath('Test.py'))
# 获取当前文件所在文件夹的上级目录
print(os.path.abspath('..'))

输出结果为:
在这里插入图片描述

2、从完整路径中分离文件名与路径

获取文件路径中的文件名
os.path.dirname(): 去掉文件名称,返回文件路径

os.path.basename(‘D:\softwares\python\ceshi.py’)
# 获取文件路径中的文件位置
os.path.dirname(‘D:\softwares\python\ceshi.py’) 

使用split函数

path=‘D:\softwares\python\ceshi.py’
fname=path.split("\\")[-1]       # 返回值为 ceshi.py

3、读取文件夹中特定类型的文件

os.listdir() 用于返回指定的文件夹包含的文件或文件夹的名字的列表,但有个很明显的缺点,它的默认顺序不是有序的或者说不是通常的顺序。

进行代码讲解前,先看一下操作文件的构成,下图为文件夹下文件构成
在这里插入图片描述在这里插入图片描述
运行该代码,返回的所有文件夹名称,具体结果如下:

import os
all_files = os.listdir('F:/contest2022/Test/ball/HSI')
print(all_files)

在这里插入图片描述
**注意:**该方法返回的是文件夹中的所有文件,包括不同类型的文件
在这里插入图片描述
下面给出读取文件夹中特定类型的文件代码,具体如下:

dir = 'F:/contest2022/Test/ball/HSI'
filelist = []
for i in os.listdir(dir):  # 遍历整个文件夹
    path = os.path.join(dir, i)
    if os.path.isfile(path):  # 判断是否为一个文件,排除文件夹
        if os.path.splitext(path)[1] == ".png":  # 判断文件扩展名是否为“.jpg”
            filelist.append(i)
for i in filelist:
    print(i)

运行结果如下:
在这里插入图片描述

二、基于第三方安装包的路径提取

注意: 该部分代码基于macOS 操作系统下的VS code进行的分析,而第一部分代码是在window操作系统下的PyCharm下进行的分析,因此在文件路径上存在差异,其他地方与window相同,代码通用。

1. 获取当前运行文件所在路径及对应父级文件夹路径

from pathlib import Path  # 导入第三方安装包

# 获取当前运行脚本文件的绝对路径  /Users/zephyrhou/Documents/Python/Test/demo1.py
FILE = Path(__file__).resolve()  

# 获取当前运行脚本文件所在文件夹路径  /Users/zephyrhou/Documents/Python/Test
ROOT = FILE.parents[0] 

print(FILE)   
print(ROOT)

运行结果如下:
在这里插入图片描述

2. 将获取文件路径转化为绝对路径

import sys, os
from pathlib import Path

# 获取当前运行脚本文件的绝对路径  /Users/zephyrhou/Documents/Python/Test/demo1.py
FILE = Path(__file__).resolve()  

# 获取当前运行脚本文件所在文件夹路径  /Users/zephyrhou/Documents/Python/Test
ROOT = FILE.parents[0] 

print(FILE)
print(ROOT)

# 将上述文件路径转换为绝对路径
if str(ROOT) not in sys.path:   # 判断路径是否在查询路径列表中
    sys.path.append(str(ROOT))  # add ROOT to PATH
ROOT = Path(os.path.relpath(ROOT, Path.cwd()))  # relative 绝对路径转化为相对路径

print(ROOT)  #相对路径输出
print(ROOT/'test')   # 相对路径下text文件路径

运行结果如下:
在这里插入图片描述

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独不懂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值