我们应该多次打开文件来阅读吗?

时间:2016-01-03 10:08:37

标签: python file io

我有以下Python脚本。我注意到,每次read()write()之后我都必须text_file = open('Text.txt','r') print 'The file content BEFORE writing content:' print text_file.read() text_file = open('Text.txt','a') text_file.write(' add this text to the file') print 'The file content AFTER writing content:' text_file = open('Text.txt','r') print text_file.read() 该文件。那是因为这样的操作后文件会自动关闭吗?

border-bottom

感谢。

2 个答案:

答案 0 :(得分:4)

r+模式和seek(0)

开启
with open('Text.txt', 'r+') as text_file:
    print 'The file content BEFORE writing content:'
    print text_file.read()
    text_file.write(' add this text to the file')
    print 'The file content AFTER writing content:'
    text_file.seek(0)
    print text_file.read()

打印:

The file content BEFORE writing content:
abc
The file content AFTER writing content:
abc add this text to the file

docs有详细信息:

  

'+'打开磁盘文件进行更新(读写)

seek()可让您在文件中移动:

  

更改流位置。

     

将流位置更改为给定的字节偏移量。偏移是   相对于由其表示的位置进行解释。值   从哪以来:

     
      
  • 0 - 开始流(默认值);偏移量应为零或正数
  •   
  • 1 - 当前流位置;偏差可能是负数
  •   
  • 2 - 流结束;偏差通常为负
  •   
     

返回新的绝对位置。

答案 1 :(得分:2)

  

这是因为文件在执行此类操作后会自动关闭吗?

没有。该文件已打开,未显式关闭。但是当您浏览文件时,文件位置会转到文件的末尾。

如果以只读模式(r)打开文件,则无法编写文件。 您必须以write模式打开文件:(w/a/r+/wb)。读取文件后,您可以使用文件对象的seek()方法移动文件位置。

此外,如果使用open函数打开文件,则必须显式关闭该文件。您可以使用:

with open('Text.txt', 'r') as text_file:
    # your code

这将在执行代码块后关闭文件。