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.

Recommended Answers

[QUOTE=;][/QUOTE]
The result is correct since you open it for reading before anything is written to it. [code]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 = …

Jump to Post

woooee is on to something, in your case you need to close the file before you can read it ...
[code]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 …
Jump to Post

All 4 Replies

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)
commented: clearer +11

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 
"""
commented: that explains it +5

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

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.