Richard D. Moores, 15.07.2011 23:21:
On Sun, Jul 10, 2011 at 05:05, Peter Otten wrote:

>>> help(print)

shows

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout)

    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file: a file-like object (stream); defaults to the current sys.stdout.
    sep:  string inserted between values, default a space.
    end:  string appended after the last value, default a newline.

I didn't know that printing to a file with print() was possible, so I tried

>>> print("Hello, world!", file="C:\test\test.txt")
Traceback (most recent call last):
   File "<string>", line 1, in<fragment>
builtins.AttributeError: 'str' object has no attribute 'write'
>>>

And the docs at
<http://docs.python.org/py3k/library/functions.html#print>  tell me
"The file argument must be an object with a write(string) method; if
it is not present or None, sys.stdout will be used."

What do I do to test.txt to make it "an object with a write(string) method"?

Oh, there are countless ways to do that, e.g.

  class Writable(object):
      def __init__(self, something):
          print("Found a %s" % something))
      def write(self, s):
          print(s)

  print("Hello, world!", file=Writable("C:\\test\\test.txt"))

However, I'm fairly sure what you want is this:

    with open("C:\\test\\test.txt", "w") as file_object:
        print("Hello, world!", file=file_object)

Look up "open()" (open a file) and the "with statement" (used here basically as a safe way to make sure the file is closed after writing).

Also note that "\t" refers to a TAB character in Python, you used this twice in your file path string.

Stefan

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to