根据定义," a +" mode打开文件以进行追加和读取。附加作品,但阅读方法是什么?我做了一些搜索,但无法在任何地方找到它。
f=open("myfile.txt","a+")
print (f.read())
试过这个,它打印为空白。
答案 0 :(得分:12)
使用f.seek()
将文件偏移量设置为文件的开头。
注意:在Python 2.7之前,有一个错误会导致某些操作系统没有始终指向文件末尾的文件位置。这可能会导致某些用户使用您的原始代码。例如,在CentOS 6上,您的代码可以按照您的意愿工作,但不应该如此。
f = open("myfile.txt","a+")
f.seek(0)
print f.read()
答案 1 :(得分:2)
使用f=open(myfile.txt,"a+")
打开文件时,可以读取和写入文件。
默认情况下,文件句柄指向文件的开头
这可以由f.tell()
确定,0L
。
In [76]: f=open("myfile.txt","a+")
In [77]: f.tell()
Out[77]: 0L
In [78]: f.read()
Out[78]: '1,2\n3,4\n'
但是,f.write
将在写入之前将指针移动到最后一行。
答案 2 :(得分:0)
模式 r +读取和写入从文件开头开始 r只读从文件开头开始 a +阅读/追加。通过写入文件末尾来保留文件内容
祝你好运! 伊莎贝尔鲁伊斯答案 3 :(得分:0)
新版本的Python依赖于操作系统仍有一些怪癖,它们是由于stdio中fopen()函数的实现不同造成的。
Linux的man fopen
:
a + - 打开阅读和追加(在文件末尾写)。如果文件不存在,则创建该文件。读取的初始文件位置位于文件的开头,但输出始终附加到文件的末尾。
OS X:
``a +'' - 开放阅读和写作。如果文件不存在,则创建该文件。流位于文件的末尾。对文件的后续写入将始终以当前文件末尾结束,无论是否有任何介入的fseek(3)或类似内容。
MSDN并没有真正说明指针最初设置的位置,只是它在写入时移动到结尾。
使用“a”或“a +”访问类型打开文件时,所有写入操作都发生在文件末尾。可以使用fseek或rewind重新定位文件指针,但在执行任何写入操作之前,始终将其移回文件末尾。因此,现有数据不能被覆盖。
使用{@ 1}} .open
通过操作系统处理任何事情时,采取明确的.tell
等预防措施会更安全。