In Python, how can I open a file and read it on one line, and still be able to close the file afterwards?

前端 未结 7 2148
面向向阳花
面向向阳花 2021-02-10 07:26

While working through this exercise I ran into a problem.

from sys import argv
from os.path import exists

script, from_file, to_file = argv
print \"Copying from         


        
相关标签:
7条回答
  • 2021-02-10 07:58

    The following Python code will accomplish your goal.

    from contextlib import nested
    
    with nested(open('input.txt', 'r'), open('output.txt', 'w')) as inp, out:
        indata = inp.read()
        ...
        out.write(out_data)
    
    0 讨论(0)
  • 2021-02-10 07:58

    Just use a semi colon in between your existing code line i.e.

    in_file = open(from_file); indata = in_file.read()
    

    I think his is what you were after..

    0 讨论(0)
  • 2021-02-10 07:59

    The preferred way to work with resources in python is to use context managers:

     with open(infile) as fp:
        indata = fp.read()
    

    The with statement takes care of closing the resource and cleaning up.

    You could write that on one line if you want:

     with open(infile) as fp: indata = fp.read()
    

    however, this is considered bad style in python.

    You can also open multiple files in a with block:

    with open(input, 'r') as infile, open(output, 'w') as outfile:
        # use infile, outfile
    

    Funny enough, I asked exactly the same question back when I started learning python.

    0 讨论(0)
  • 2021-02-10 07:59

    You should think of this as an exercise to understand that input is just a name for what open returns rather than as advice that you ought to do it the shorter way.

    As other answers mention, in this particular case the problem you've correctly identified isn't that much of an issue - your script closes fairly quickly, so any files you open will get closed fairly quickly. But that isn't always the case, and the usual way of guaranteeing that a file will close once you're done with it is to use a with statement - which you will find out about as you continue with Python.

    0 讨论(0)
  • 2021-02-10 08:00

    The file will be closed automatically and safely when your script completes.

    0 讨论(0)
  • 2021-02-10 08:06
    in_file = open(from_file).read(); out_file = open(to_file,'w').write(in_file)
    
    0 讨论(0)
提交回复
热议问题