import re
#这里以读取video_reqtest.txt中后一个括号内的数字0.079,存到train.txt为例,video_reqtest.txt文件中的内容如下
#video 1/1 (1/902) /content/drive/MyDrive/yolov5-5.0/mydata/barbecue.mp4: 384x640 1 fire, Done. (0.079s)
#video 1/1 (2/902) /content/drive/MyDrive/yolov5-5.0/mydata/barbecue.mp4: 384x640 1 fire, Done. (0.015s)
#video 1/1 (3/902) /content/drive/MyDrive/yolov5-5.0/mydata/barbecue.mp4: 384x640 1 fire, Done. (0.015s)
# 读取文件的每一行
read_txt = open("video_reqtest.txt", "r",encoding="utf-8")
#定义一个空列表用于接收提取出来的内容
temp = []
for line in read_txt:
a = re.findall(r'[(](.*?)[)]', line) #读出一行中()内的值,用到是python的正则表达式,不懂。。。如 abbc(0.1s) ,读出为 0.1s
'''
print(a)
输出结果:
['1/902', '0.079s']
['2/902', '0.015s']
['3/902', '0.015s']
要提取的内容在列表的第二个索引中,再去掉a[1]中的s
'''
b = re.findall(r'(.*?)[s]', a[1]) #按上面的方法把s去掉
'''
print(b)
输出结果:
['0.079']
['0.015']
['0.015']
要提取的内容在列表的第一个索引中,注意不是列表b呦。。。
'''
temp.append((b[0])) #添加到临时列表中
'''
print(temp)
输出内容:
['0.079']
['0.079', '0.015']
['0.079', '0.015', '0.015']
循环一次添加一个,最后得到我们要的列表。。。。
对一个python小白来说搞到这里好艰难,参考网友的内容,一点点的搞出来了。。。。。
还有最后一步,保存到文件。。。
'''
#写入到文件
with open("train.txt","w",encoding='utf-8') as file:
for i in temp:
file.write(i+'\n')
file.close()
'''trian文件内容'''
#0.079
#0.015
#0.015
#于2022-05-15
ps:python中open读写模式的参数:
要了解文件读写模式,需要了解几种模式的区别,以及对应指针
r : 读取文件,若文件不存在则会报错
w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件
a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾
rb,wb: 分别于r,w类似,但是用于读写二进制文件
r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖
w+ : 可读,可写,文件不存在先创建,会覆盖
a+ : 可读、可写,文件不存在先创建,不会覆盖,追加在末尾