pythonで以下のフォルダ内のtextファイルの中身を書き換えたいです。
bash
1#フォルダ構成 2>>>> 3label/train/30cad59a9bce844a.txt 4 5#textファイルの中身 6$ cat 30cad59a9bce844a.txt 7>>>> 8Knife 64.0 0.0 1023.36 679.35944
したいこと
ファイル名はそのままで30cad59a9bce844a.txtの中身のknife -> 1(classesのlist番号)に書き換えたい
1 64.0 0.0 1023.36 679.35944
以下のコードで試しましたがうまく上書きできません。解決方法を教えていただけないでしょうか?よろしくお願いします。
エラー
bash
1Traceback (most recent call last): 2 File "/Users/hagi/Downloads/place/place/text_anno.py", line 40, in <module> 3 train_txt(classes, data_types="train") 4 File "/Users/hagi/Downloads/place/place/text_anno.py", line 33, in train_txt 5 new_label_text(path=label_path, class_list=classes) 6 File "/Users/hagi/Downloads/place/place/text_anno.py", line 21, in new_label_text 7 lf.write(box_info) 8io.UnsupportedOperation: not writable
python
1import json 2from tqdm import tqdm 3import os 4import numpy as np 5import glob 6 7def npint(cls): 8 return int(float(cls)) 9 10 11def new_label_text(path, class_list): 12 classes_dicts = {key:idx for idx, key in enumerate(class_list)} 13 lf = open(path, 'r', encoding='utf-8') 14 for line in lf.readlines(): 15 cls, x_min, y_min, x_max, y_max = line.split(" ") 16 clsid = classes_dicts[cls] 17 x_min, y_min, x_max, y_max = npint(x_min), npint(y_min), npint(x_max), npint(y_max) 18 19 box_info = " %d,%d,%d,%d,%d" % ( 20 int(clsid), x_min, y_min, x_max, y_max) 21 lf.write(box_info) 22 lf.write('\n') 23 24 25def train_txt(classes, data_types): 26 filetxt_name = '{}.txt'.format(data_types) 27 with open(filetxt_name, 'w') as f: 28 #for cls in classes: 29 label_path = glob.glob(os.path.join('labels', data_types, '*.txt')) 30 sorted(label_path) 31 for label_path in tqdm(label_path): 32 # text for label 33 new_label_text(path=label_path, class_list=classes) 34 35 36 37 38if __name__=='__main__': 39 classes = ['Knife'] 40 train_txt(classes, data_types="train")

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。