关于file:close()Python中的变量

close() a variable in Python

本问题已经有最佳答案,请猛点这里访问。

我有以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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()"。完成后关闭文件非常重要。

如何关闭变量?


txt.close()将关闭的文件解析器。但是我会suggest with:使用。

1
2
3
4
5
6
7
8
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()

这确保该文件解析器是正确,也使清洁封闭的Python是更多的代码。


在他们各自的txt_again.close()txt.close()和打印报表。

编辑:有尖的人已经出报表,使用with是美妙的选择。


你的书是作为文本和imprecise是不清楚的。他们所想要的是你的file.close()呼叫的方法在文件对象:

1
2
print txt.read()
txt.close()

1
2
print txt_again.read()
txt_again.close()

更好的想法是使用Python的语句有一个with为你自动关闭文件;文件对象的上下文管理者:是

1
2
3
4
5
6
7
8
9
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——(进入开始这一块的风险),和当indented段末端的声明通知的文件对象的完整的块(exiting SAH的风险)。自动关闭文件对象本身在这一点。


使用txt.close()

这是值得注意的是,你还没有关闭该变量,而手柄上的文件。