Python文件路径名的Path操作
2022-05-27 本文已影响0人
逍遥_yjz
# conding:utf-8
import os,sys
import shutil
from pathlib import Path
from shutil import copyfile
import numpy as np
from tqdm import tqdm
def test_path_val_list():
ROOT = sys.path[0]
FILE_ROOT = Path(ROOT)
# 原始数据集
IMAGE_SET_ROOT = FILE_ROOT.joinpath(r"VOC2028\ImageSets\Main") # 图片区分文件的路径
LABELS_ROOT = FILE_ROOT.joinpath(r"Labels") # 进行归一化之后的标签位置
labels_root = FILE_ROOT.joinpath(r"VOC2028/Labels")
root = IMAGE_SET_ROOT # 数据集 xml 标签的位置
print(FILE_ROOT)
print(f'IMAGE_SET_ROOT={IMAGE_SET_ROOT}')
print(root)
if LABELS_ROOT.exists():
# 清空标签文件夹
print('清空此文件下的所有文件数据')
shutil.rmtree(LABELS_ROOT)
'''
相当于在FILE_ROOT文件下创建VOC2028\Labels,不可行,例如这个labels_root
如果创建Labels,可行;
如果这个文件存在,就会清空这个数据
'''
LABELS_ROOT.mkdir(exist_ok=True) # 建立 Label 文件夹
# FileNotFoundError: [WinError 3] 系统找不到指定的路径。
# labels_root.mkdir(exist_ok=True)
'''2.关于 tqdm 进度条的,遍历文件数据'''
FILE_ROOT = Path(r"D:\迅雷下载\安全帽\VOC2028")
ANNOTATIONS_PATH = FILE_ROOT.joinpath(r"VOC2028\Annotations") # 数据集标签文件的位置
root = ANNOTATIONS_PATH # 数据集 xml 标签的位置
with tqdm(total=len(os.listdir(root))) as p_bar:
for file in root.iterdir():
p_bar.update(1)
print(file) # D:\VOC2028\Annotations\PartB_02404.xml
# 这里是整条路径
def getPathTail():
path = r'E:\VOC2028\images\20220527102523.png'
# 如果path以'/'或'\'结尾,那么就会返回空值。
print(os.path.basename(path)) # 20220527102523.png
# 如果path以'/'或'\'结尾,那么就会返回images
img_path = Path(path)
print(os.path.basename(img_path))
'''更改 suffix 的新路径。如果原始路径没有后缀,则会追加新的suffix。
如果 suffix 是空字符串,则删除原始后缀'''
print(img_path.with_suffix('.txt'))
# E:\VOC2028\images\20220527102523.txt
print(img_path.with_suffix(''))
# E:\VOC2028\images\20220527102523
if __name__ == '__main__':
'''
1. path()包装下,
路径拼接:FILE_ROOT.joinpath(r"Labels")
文件的创建LABELS_ROOT.mkdir(exist_ok=True),
文件list的遍历root.iterdir()
'''
test_path_val_list()
''' 2. 取路径的尾巴和改变换格式txt'''
getPathTail()
'''
获取文件路径的方法:
(1)name:目录的最后一个部分
(2)suffix:目录中最后一个部分的拓展名
(3)stem:目录最后一个部分,没有后缀。
(4)suffixes 返回多个扩展名列表。
(5)with_suffix(suffix):补充扩展名到路径尾部,返回新的路径,扩展名存在则无效。
(6)with_name(name):替换目录最后一个部分并返回一个新的路径。
'''
p = Path('/viktor/mysqlinstall/mysql.tar.gz')
print(p.name) # mysql.tar.gz
print(p.suffix) # .gz
print(p.suffixes) # ['.tar', '.gz']
print(p.stem) # mysql.tar
print(p.with_name('mysql-5.tgz')) # /viktor/mysqlinstall/mysql-5.tgz
p = Path('README')
print(p.with_suffix('.txt')) # README.txt