美文网首页
Python文件路径名的Path操作

Python文件路径名的Path操作

作者: 逍遥_yjz | 来源:发表于2022-05-27 14:30 被阅读0次
# 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

参考文献

相关文章

网友评论

      本文标题:Python文件路径名的Path操作

      本文链接:https://www.haomeiwen.com/subject/txgmprtx.html