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
comment:2 Changed 17 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):