2013-04-12 4 views
0

Я пытаюсь прочитать файл, а затем записать его обратно в тот же файл с пробелом между каждым символом и одним заглавным и одним нормальным.Таблетка при записи в файл

Я могу написать либо установить нормально, но я не могу написать оба из них нормально.

Вот мой код

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 

Так что, черт возьми, это возвращение тарабарщины, и что я могу сделать, чтобы исправить это?

+4

Что такое исходный вход? – summea

+1

Было бы полезно, если бы вы включили точное содержимое входного файла и сказали нам свою версию Python. – NPE

+0

Я действительно разрешил это. Мне просто нужен флеш() после записи второго файла. Я даже не знаю, почему. – iargue

ответ

0

Вы должны срезанным файл, прежде чем писать снова к нему:

f.seek(0) 
f.truncate() 
+0

Почему? вы можете просто частично перезаписать его. –

+0

Я подозреваю, что это может иметь значение здесь. Просто для проверки, это на Python 2 или Python 3? –

Смежные вопросы