欢迎学习交流!
邮箱: z…@1…6.com
网站: https://zephyrhours.github.io/
在不导入包的情况下,基于python内部环境进行文件路径提取,首先导入python自带环境包。
import os # 这里的os就是operation system的含义
# 获取当前运行文件所在的文件夹路径(当前的工作文件夹路径)
print(os.getcwd())#与.等价
print(os.path.abspath('.'))
# 获取当前运行文件路径
print(os.path.abspath('Test.py'))
# 获取当前文件所在文件夹的上级目录
print(os.path.abspath('..'))
输出结果为:
获取文件路径中的文件名
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
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相同,代码通用。
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)
运行结果如下:
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文件路径
运行结果如下: