How to safely open/close files in python 2.4

前端 未结 4 2126
自闭症患者
自闭症患者 2020-11-28 08:42

I\'m currently writing a small script for use on one of our servers using Python. The server only has Python 2.4.4 installed.

I didn\'t start using Python until 2.

相关标签:
4条回答
  • 2020-11-28 08:59

    In the above solution, repeated here:

    f = open('file.txt', 'r')
    
    try:
        # do stuff with f
    finally:
       f.close()
    

    if something bad happens (you never know ...) after opening the file successfully and before the try, the file will not be closed, so a safer solution is:

    f = None
    try:
        f = open('file.txt', 'r')
    
        # do stuff with f
    
    finally:
        if f is not None:
           f.close()
    
    0 讨论(0)
  • 2020-11-28 09:10

    Here is example given which so how to use open and "python close

    from sys import argv
    script,filename=argv
    txt=open(filename)
    print "filename %r" %(filename)
    print txt.read()
    txt.close()
    print "Change the file name"
    file_again=raw_input('>')
    print "New file name %r" %(file_again)
    txt_again=open(file_again)
    print txt_again.read()
    txt_again.close()
    

    It's necessary to how many times you opened file have to close that times.

    0 讨论(0)
  • 2020-11-28 09:11

    See docs.python.org:

    When you’re done with a file, call f.close() to close it and free up any system resources taken up by the open file. After calling f.close(), attempts to use the file object will automatically fail.

    Hence use close() elegantly with try/finally:

    f = open('file.txt', 'r')
    
    try:
        # do stuff with f
    finally:
        f.close()
    

    This ensures that even if # do stuff with f raises an exception, f will still be closed properly.

    Note that open should appear outside of the try. If open itself raises an exception, the file wasn't opened and does not need to be closed. Also, if open raises an exception its result is not assigned to f and it is an error to call f.close().

    0 讨论(0)
  • 2020-11-28 09:11

    No need to close the file according to the docs if you use with:

    It is good practice to use the with keyword when dealing with file objects. This has the advantage that the file is properly closed after its suite finishes, even if an exception is raised on the way. It is also much shorter than writing equivalent try-finally blocks:

    >>> with open('workfile', 'r') as f:
    ...     read_data = f.read()
    >>> f.closed
    True
    

    More here: https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects

    0 讨论(0)
提交回复
热议问题