参考链接
Python文件读写、StringIO和BytesIO 概念参考
数据格式为:
20180616_231315_A003081_B003080_A 1 0.000 1.840 speaker NA unknown
20180616_231315_A003081_B003080_B 1 0.000 1.840 speaker NA unknown
转换为:
20180616_231315_A003081_B003080 1 0.000 1.840 speaker NA unknown
20180616_231315_A003081_B003080 1 0.000 1.840 speaker NA unknown
代码如下:
# ester1.tst.mdtm 把第一个 show 字段 去掉 _A _B 转化为 test.tst.mdtm
# show 代表音频名字
f = open("ester.tst.mdtm","r")
fo = open("test.tst.mdtm", "w")
while True:
line = f.readline()
if not line:
break
else:
try:
#print(line)
#print(type(line))
temp = line[:31] + line[33:]
fo.write(temp)
except:
print("=====")
print(str(line))
print("=====")
fo.close()
文件读写相关知识:
‘r’:读
‘w’:写
‘a’:追加
‘r+’ == r+w(可读可写,文件若不存在就报错(IOError))
‘w+’ == w+r(可读可写,文件若不存在就创建)
‘a+’ ==a+r(可追加可写,文件若不存在就创建)
对应的,如果是二进制文件,就都加一个b就好啦:
‘rb’ ‘wb’ ‘ab’ ‘rb+’ ‘wb+’ ‘ab+’
踩的坑:
“”"
自己把 mdtm文件 ,一行读出, decode解码为 string 去掉 _A _B 后,再 encode编码为 字节 ,写入 mdtm
报错如下:
ValueError: not enough values to unpack (expected 8, got 0)
“”"
总结如下:
二进制方式 读写文件 ,但是二进制字节 转 字符串 ,去字符,再转 字节写入文件
这种方法,数据看上去没有问题,但是 我的程序是运行报错的 ,所以 要么读写都用 二进制 读写, 要么都用 字符串 读写