for i in list: # 遍历每一个文件 name = labels_name[i] # 获取每一个文件的文件名 read_file = open(txt_file_path + "/" + name, 'r') # 读取txt_file_path/labels路径中的文件,r表示以只读方式打开文件 fline = read_file.readlines() # 读取txt文件中每一行 / readlines()表示读取整行 / fline是列表类型,fline列表里的元素是str类型 save_txt = open(save_file_path + "/" + name, 'w+') # 读取save_file_path/labels路径中的文件. w+表示打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 for j in fline: # 遍历txt文件中每一行 list1 = j.split() # print(list1) # 删除类别 if list1[0] != '1': # 删除类别1 if list1[0] != '5': # 删除类别5。请将改代码功能从删除类别改为挑选某类别
时间: 2024-03-20 16:40:14 浏览: 73
ValueError: Could not find a format to read the specified file in mode ‘i’
如果想要挑选某个类别,可以将代码改为判断每一行的第一个元素是否为想要选择的类别,如果是则将该行写入新的文件中。可以参考下面的代码:
```
for i in list: # 遍历每一个文件
name = labels_name[i] # 获取每一个文件的文件名
read_file = open(txt_file_path + "/" + name, 'r') # 读取txt_file_path/labels路径中的文件,r表示以只读方式打开文件
fline = read_file.readlines() # 读取txt文件中每一行 / readlines()表示读取整行 / fline是列表类型,fline列表里的元素是str类型
save_txt = open(save_file_path + "/" + name, 'w+') # 读取save_file_path/labels路径中的文件. w+表示打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
for j in fline: # 遍历txt文件中每一行
list1 = j.split()
# 判断是否为想要选择的类别
if list1[0] == '2': # 选择类别2
save_txt.write(j) # 将该行写入新的文件中
save_txt.close() # 关闭文件
```
需要注意的是,上述代码仅仅是将选择的类别写入新的文件中,如果想要保留原来的文件,可以将`save_txt = open(save_file_path + "/" + name, 'w+')`改为`save_txt = open(save_file_path + "/" + name.split('.')[0] + '_selected.txt', 'w+')`,这样会在`save_file_path`路径下生成一个新的文件,文件名为原来的文件名加上`_selected`后缀。
阅读全文