写入文件时的胡言乱语

时间:2013-04-12 20:32:20

标签: python file

我正在尝试读取一个文件,然后将其写回同一个文件,每个字符之间有一个空格,一个设置大写,一个设置正常。

我可以正常写任何一套,但我不能正常写两个。

这是我的代码

import string
f = open('text.txt', 'r+')
file = f.read()
file = file.translate(None, string.whitespace)
file = file.translate(None, string.punctuation)
file = ' '.join(file)
file2 = file.upper()
f.seek(0)
f.write(file)
f.flush()
f.write(file2)
f.close()

然而,遗憾的是这不起作用。当在记事本中打开它时,它全是胡言乱语。当在python中第二次读取它时,它会完美地看到两组字符串,然后在出错之前乱码。例如:

 Y A L E T T E R S A Y I N G ô C    ƒ▬s ► É☺↨ ░☺≡≡≡ ≡≡≡                
 ☺☺☺        Ç>      ☺   ☺   ☺               ▼ ë☺                            ☺

然后结局应该是“麻烦而不是它的价值”

所有事情的一半只是为了胡言乱语,而不是像它应该写的那样。

即使我不写文件也会发生这种情况。

print file returns perfect string
print file2 returns perfect string
temp = file + file2
print temp returns gibberish part of the way through

那么为什么它会回归乱码,我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:0)

在再次写入文件之前,您需要截断文件:

f.seek(0)
f.truncate()