示例15艰难地学习Python

时间:2016-01-08 08:04:14

标签: python

研究演习要求我在完成之后关闭文件。我试过这样的话:

from sys import argv

script, file = argv

txt = open(file)

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

print txt.close()

所有这一切都打印出来"没有"运行脚本时。我以为它会清除文本文件。关闭它它在做什么?如果这看起来像什么,我不想遥遥领先。

5 个答案:

答案 0 :(得分:6)

close是一种没有返回值的方法。在Python中,没有值等于None。因此,打印close的结果不是很有用。

答案 1 :(得分:1)

让我们详细阅读代码

from sys import argv

argv是一个列表,其中包含在命令行上提供给脚本的参数,例如: python script.py hello.txt使argv成为['script.py', 'hello.txt']

script, file = argv

argv的元素分配给变量scriptfile

txt = open(file)

打开文件进行阅读,txt是文件对象(即文件的处理程序)

print "Here's your file %r:" % file

打印文本,用%r替换文件名

print txt.read()

读取文件的内容并打印出来

print txt.close()

如前所述,打印出close返回的值是没有意义的,None

相反,只需做

txt.close()

请注意,通常情况下,您使用上下文管理器(请参阅this tutorial)以确保文件已打开并始终关闭

with open(file) as txt:
    print txt.read()

如果您想在打印完文件后清除文件内容,可以

with open(file, 'r+') as txt: # opens the file for reading and writing
    print txt.read()
    txt.seek(0) # moves back the cursor
    txt.truncate()  # truncates the file's size

答案 2 :(得分:0)

当你close文件没有删除它的内容时,你只需要删除它上面的锁,告诉其他进程你打开它,并防止它在你写的时候被删除它。

答案 3 :(得分:0)

从Python的角度来看

它是一个没有返回类型的方法,相当于你可以看到的无。

从实际工作角度来看

它删除了对资源的写锁定。在数据库中了解有关竞争条件的更多信息。

答案 4 :(得分:0)

使用with open(filename, 'r') as file: content = file.read() print(content) #prints it print(content) #also prints it. Does not go out of scope 编写文件IO的更好方法。它会自动关闭文件。例如:

{{1}}

其中'r'用于读取,'w'用于写入,'a'用于追加。