【问题标题】:close() a variable in Python [duplicate]关闭()Python中的变量[重复]
【发布时间】:2014-07-31 20:05:18
【问题描述】:

我有以下代码:

from sys import argv

script, filename = argv

txt = open(filename)

print "Here's your file %r:" % filename
print txt.read()

print "Type the filename again:"
file_again = raw_input("> ")

txt_again = open(file_again)

print txt_again.read()

在我书中的一个练习中,它说“让你的脚本也对txttxt_again 变量执行close()。完成文件后关闭文件很重要。

如何关闭变量?

【问题讨论】:

标签: python file


【解决方案1】:

txt.close() 将关闭文件解析器。不过我建议改用with

with open(filename) as txt:
    print "Here's your file %r:" % filename
    print txt.read()

print "Type the filename again:"
file_again = raw_input("> ")
with open(file_again) as txt_again
    print txt_again.read()

这可以确保文件解析器正确关闭,并且可以使代码更简洁。

【讨论】:

  • 感谢您的建议 :)
【解决方案2】:

txt.close()txt_again.close() 在各自的打印语句之后执行。

编辑:正如其他人已经指出的那样,使用with statement 是一个更好的选择。

【讨论】:

    【解决方案3】:

    您的图书文字不清楚且不准确。他们想让你做的是在文件对象上调用file.close() method

    print txt.read()
    txt.close()
    

    print txt_again.read()
    txt_again.close()
    

    更好的 想法是使用with statement 让 Python 自动为您关闭文件;文件对象是context managers:

    with open(filename) as txt:
        print "Here's your file %r:" % filename
        print txt.read()
    
    print "Type the filename again:"
    file_again = raw_input("> ")
    
    with open(file_again) as txt_again:
        print txt_again.read()
    

    with 语句告诉文件对象块开始(进入上下文),当缩进部分结束时,语句通知文件对象块已经完成(退出 上下文)。文件对象会在此时自动关闭。

    【讨论】:

      【解决方案4】:

      使用txt.close()

      还值得注意的是,您关闭的不是变量,而是文件的句柄。

      【讨论】:

        猜你喜欢
        • 2012-10-28
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 2020-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多