我有以下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
感谢。
答案 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
这将在执行代码块后关闭文件。