Opened 18 years ago
Closed 18 years ago
#225 closed enhancement (wontfix)
Add functionality to Screen_catcher to print to screen and save
| Reported by: | nick | Owned by: | nick |
|---|---|---|---|
| Priority: | low | Milestone: | |
| Component: | Functionality and features | Version: | |
| Severity: | trivial | Keywords: | |
| Cc: |
Description
I think this should be fairly simply
Here is the class Screen catcher, And all i think is needed is a way to exit the writ e method without having the sys.stdout write something.
class Screen_Catcher:
"""this simply catches the screen output and stores it to file defined by
start_screen_catcher (above)
"""
def __init__(self, filename, old_stuff=''):
self.filename = filename
if exists(self.filename)is True:
print'Old existing file "%s" has been deleted' %(self.filename)
remove(self.filename)
def write(self, stuff):
fid = open(self.filename, 'a')
fid.write(stuff)
print_to_screen = True
if print_to_screen:
if old_stuff==stuff:
return #somehow exit write without printing anything
else:
print stuff
print 'old_stuff',old_stuff,'stuff',stuff
old_stuff=stuff
print 'old_stuff1',old_stuff,'stuff1',stuff
I have tried to implement the following case: If the print_to_screen is True, print the statement but stop sys.stdout printing out the results again which leads to an infinite loop.
I tried using a test with old_stuff==stuff but i think the solution lies in exitting Screen_catcher Write() without printing anything... "return" doesn't work but is there something like return but works at a different level... if that makes any sense...
Or explore a new way to pipe the print out away for sys.stdout to some other screen output
Change History (2)
comment:1 Changed 18 years ago by
comment:2 Changed 18 years ago by
| Resolution: | → wontfix |
|---|---|
| Status: | new → closed |
This is being closed due the very low priority and my research into it suggested it will be tricky to implement

This is not as simple as I first thought. Mainly due to the screen_catcher object replacing sys.stdout and if screen_catcher writes anything it ends in a infinite loop as sys.stdout is called which is actually screen_catcher.... if there was a way to set and unset sys.stdout with every write() called, you might avoid this... or maybe the below code could be useful.... or not
_CAPTURE = StringIO.StringIO() _FLAG = True # start capturing
def printf(obj):