Opened 17 years ago
Closed 17 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 17 years ago by nick
comment:2 Changed 17 years ago by nick
- Resolution set to wontfix
- Status changed from new to 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):