Идея Dan не вполне работает:
#!/usr/bin/env python
class flushfile(file):
def __init__(self, f):
self.f = f
def write(self, x):
self.f.write(x)
self.f.flush()
import sys
sys.stdout = flushfile(sys.stdout)
print "foo"
результат:
Traceback (most recent call last):
File "./passpersist.py", line 12, in <module>
print "foo"
ValueError: I/O operation on closed file
я полагаю, что проблема состоит в том, что это наследовалось классу файла, который на самом деле не необходим. Согласно документам для sys.stdout:
stdout и stderr needn’t быть встроенными объектами файла: любой объект приемлем, пока он имеет запись () метод, который берет аргумент строки.
настолько изменяющийся
class flushfile(file):
к [1 110]
class flushfile(object):
заставляет его работать просто великолепно.
Вуаля!
Этот список является достаточно полным и интерактивным, поэтому я не буду воспроизводить его здесь. Но он также имеет изменения по сравнению с версиями 97, 2000 и 2003.
Вот некоторые из изменений, которые я заметил на данный момент:
Shape.ThreeD.RotationX = 90
стал
Shape.ThreeD.RotationY = -90
(т.е. X и Ось Y поменялась местами для трехмерного вращения автофигур, а положительное / отрицательное направления вдоль этой оси противоположны).
Excel больше не соблюдает директиву
Shape.ThreeD.ExtrusionColorType = msoExtrusionColorAutomatic
(она просто дает черную экструзию, по крайней мере, в моих тестах).
Трехмерные формы теперь должны иметь явно заданное направление освещения, например
Shape.ThreeD.PresetLightingDirection = msoLightingRight
, тогда как раньше в этом не было необходимости.
Это лишь некоторые из вещей, которые я открыл на данный момент. Я уверен, что их гораздо больше - я буду добавлять их по мере их нахождения (я постараюсь включить в этот ответ вещи, касающиеся автофигур, и сгруппировать другие изменения / проблемы в отдельные ответы, чтобы упростить просмотр).
Если у вас есть код, который использует
Application.ScreenUpdating = False
для ускорения, вы должны явно вызвать
Application.ScreenUpdating = True
перед отображением MsgBox или InputBox, если вы хотите, чтобы изменения отображались на экране (тогда как 2002 всегда будет обновите экран перед отображением любого диалогового окна).