提示:python读取文件挺方便的,这篇就介绍一下如何使用os.path搞定路径的问题
读取(strip, split)
# import
import os
import os.path as osp
import glob
# 更加深入
data_root = 'a/b/c'
data_path = osp.join(a, 'd', 'e') # a/b/c/d/e
# 读取文件夹下所有文件 并生成list
# 例如 data_path 下面时一堆 png图片
images_list = glob.glob(osp.join(data_path, '*.png'))
# images_list 是一个list, 存放着所有png照片的名称
# 一个读取的例子,注意 *strip* 和 *split*
shapes = []
with open(anno_dir, 'r') as anno_f:
lines = anno_f.readlines()
for line in lines:
coords = []
coords_str = line.strip().split(' ')
for i in range(len(coords_str) // 2):
coord_x = float(coords_str[2 * i]) + offset_x
coord_y = float(coords_str[2 * i + 1]) + offset_y
coords.append(coord_x)
coords.append(coord_y)
if len(coords) > 3:
shapes.append(coords)
os.path.dirname()
语法:os.path.dirname(path)
功能:去掉文件名,返回目录
print(os.path.dirname(“E:/Read_File/read_yaml.py”))
#结果:
E:/Read_File
os.path.basename(path)
返回path最后的文件名。如果path以/或\结尾,那么就会返回空值
print(os.path.basename(“E:/Read_File/read_yaml.py”))
#结果:
read_yaml.py
创建不存在的文件夹
if not osp.exists(mask_dir):
os.makedirs(mask_dir)
# os.mkdir(mask_dir)
# 区别在于,os.makedirs会递归的建立输入的路径,即使是上层的路径不存在,它也会建立这个路径,
# 而os.mkdir父级路径不存在,那么就会报错。
创建txt
当txt的文件夹已经存在时,可以直接用open(path, ‘w’)直接写就行,可以直接创建
## 二维list (lanes), 每一个内部list 写一行。
with open(save_path, 'w') as write_f:
for idx, coord_line in enumerate(lines):
for coord in coord_line:
print(coord, file=write_f, end=' ')
if idx != len(lines) - 1:
print(file=write_f) # print a new line, end= 默认是换行符