在 python 中使用 truncate(0) 会出现无效字符
invalid characters happens by using truncate(0) in python
我在 python 中使用了 truncate(0) 来覆盖我文件中的数据。部分代码是这样的:
l=f.readlines()
f.truncate(0)
for w in l:
data=w.split()
if 105==int(data[0]):
f.write('%s %s\n'%((str(data[0]),str(np.mean(b)))))
else:
f.write('%s %s\n'%((str(data[0]),(data[1]))))
代码工作正常并且输出正确,但是当我打开输出文件(txt 格式)时出现“无效字符”错误。在输出文件的开头,我有这个额外的数据:
[=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=]
坏字符错误是针对这些额外数据的。在这个无效字符之后,我有输出数据,由python制作,这是正确的。
为什么会发生这种情况,我该如何解决?
因为在f.readlines()
调用之后,文件位置仍然设置为原来的文件末尾。 truncate
不会更改文件位置,因此当您编写字符串时,它会用零填充到文件的旧末尾。在截断之前只需执行 f.seek(0)
。
我在 python 中使用了 truncate(0) 来覆盖我文件中的数据。部分代码是这样的:
l=f.readlines()
f.truncate(0)
for w in l:
data=w.split()
if 105==int(data[0]):
f.write('%s %s\n'%((str(data[0]),str(np.mean(b)))))
else:
f.write('%s %s\n'%((str(data[0]),(data[1]))))
代码工作正常并且输出正确,但是当我打开输出文件(txt 格式)时出现“无效字符”错误。在输出文件的开头,我有这个额外的数据:
[=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=][=12=]
坏字符错误是针对这些额外数据的。在这个无效字符之后,我有输出数据,由python制作,这是正确的。
为什么会发生这种情况,我该如何解决?
因为在f.readlines()
调用之后,文件位置仍然设置为原来的文件末尾。 truncate
不会更改文件位置,因此当您编写字符串时,它会用零填充到文件的旧末尾。在截断之前只需执行 f.seek(0)
。