研究演习要求我在完成之后关闭文件。我试过这样的话:
from sys import argv
script, file = argv
txt = open(file)
print "Here's your file %r:" % file
print txt.read()
print txt.close()
所有这一切都打印出来"没有"运行脚本时。我以为它会清除文本文件。关闭它它在做什么?如果这看起来像什么,我不想遥遥领先。
答案 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
的元素分配给变量script
和file
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'用于追加。