1

According to the Python 2.7 manual this construction of the with statement should work:

text = "aim low and reach it"

fname = "test7.txt"

with open(fname, 'w') as foutp, open(fname, 'r') as finp:
    # write text to file
    foutp.write(text)
    # read text from file
    mytext = finp.read()

print("to file --> %s" % text)
print('-'*30)
print("from file --> %s" % mytext)

""" my result -->
to file --> aim low and reach it
------------------------------
from file --> 
"""

It writes the file out, but does not read it in. There is no error traceback.

4
Contributors
4
Replies
7
Views
6 Years
Discussion Span
Last Post by vegaseat
3

The result is correct since you open it for reading before anything is written to it.

text = "aim low and reach it"

fname = "test7.txt"
 
with open(fname, 'w') as foutp:
    # write text to file
    foutp.write(text)

# read text from file
with open(fname, 'r') as finp:
    mytext = finp.read()
 
print("to file --> %s" % text)
print('-'*30)
print("from file --> %s" % mytext)

Edited by woooee: n/a

Votes + Comments
clearer
2

woooee is on to something, in your case you need to close the file before you can read it ...

text = "aim low and reach it"

fname = "test7.txt"

with open(fname, 'w') as foutp, open(fname, 'r') as finp:
    # write text to file
    foutp.write(text)
    # need to close the outp file so you can read it
    foutp.close()
    # read text from file
    mytext = finp.read()
    #print(foutp, finp)  # test

print("to file --> %s" % text)
print('-'*30)
print("from file --> %s" % mytext)

""" my result -->
to file --> aim low and reach it
------------------------------
from file -->  aim low and reach it 
"""
Votes + Comments
that explains it
1

I think woooee's approach is clearer. The extra close() may be too easy to miss.

I agree! I think the OP wanted to explore the fact that can open two files on the same 'with' line.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.