print to a derived file

2008-01-15 Thread iu2
Hi,

I'm trying to write data to both a file and the console, so I did:

class File_and_console(file):
def write(self, s):
file.write(self, s)
print s,

 f = File_and_console('1.txt', 'w')
 f.write('hello')
hello
 print f, 'world'


the 'write' method works, but 'print ' doesn't, it writes only to
the file. It doesn't actually call File_and_console.write

Why? How can I fix it?
Thanks
iu2
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: print to a derived file

2008-01-15 Thread Ben Fisher
This might have something to do with the class being derived from file.

I've written it so that it doesn't derive from file, and it works.

class File_and_console():
def __init__(self, *args):
self.fileobj = open(*args)
def write(self, s):
self.fileobj.write(s)
print s,

f = File_and_console('testout.tmp','w')
f.write('hello')
print f,'hello',


On 1/15/08, iu2 [EMAIL PROTECTED] wrote:
 Hi,

 I'm trying to write data to both a file and the console, so I did:

 class File_and_console(file):
def write(self, s):
file.write(self, s)
print s,

  f = File_and_console('1.txt', 'w')
  f.write('hello')
 hello
  print f, 'world'
 

 the 'write' method works, but 'print ' doesn't, it writes only to
 the file. It doesn't actually call File_and_console.write

 Why? How can I fix it?
 Thanks
 iu2
 --
 http://mail.python.org/mailman/listinfo/python-list

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: print to a derived file

2008-01-15 Thread iu2
On Jan 15, 12:44 pm, Ben Fisher [EMAIL PROTECTED] wrote:
 This might have something to do with the class being derived from file.

 I've written it so that it doesn't derive from file, and it works.

 class File_and_console():
         def __init__(self, *args):
                 self.fileobj = open(*args)
         def write(self, s):
                 self.fileobj.write(s)
                 print s,

 f = File_and_console('testout.tmp','w')
 f.write('hello')
 print f,'hello',


Thanks, but that's what I tried first. Then I though it would be nice
if I could just inherit from 'file' and implement this with less code.
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: print to a derived file

2008-01-15 Thread Scott David Daniels
iu2 wrote:
 Hi,
 
 I'm trying to write data to both a file and the console, so I did:
 
 class File_and_console(file):
   def write(self, s):
   file.write(self, s)
   print s,
  f = File_and_console('1.txt', 'w')
...

Always use the same method for writing, or you will get weird results.
If you think the above works, try:
  for char in 'sample': f.write(char)

class MultiWrite(object):

 def write(self, text):
 for dest in self._files:
 dest.write(text)

 def __init__(self, *files):
 self._files = files

 def close(self):
 for dest in self._files:
 dest.close()


f1 = MultiWrite(open('1.txt', 'w'), sys.stdout)

--Scott David Daniels
[EMAIL PROTECTED]

-- 
http://mail.python.org/mailman/listinfo/python-list