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.

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 5 Years Ago by woooee: n/a

Comments
clearer

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 
"""
Comments
that explains it

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.