根据定义,“a+”模式打开文件以进行追加和读取。追加作品,但阅读的方法是什么?我做了一些搜索,但找不到任何地方澄清。
f=open("myfile.txt","a+")
print (f.read())
试过这个,它打印空白。
用于f.seek()
将文件偏移量设置为文件的开头。
注意:在 Python 2.7 之前,有一个 bug 会导致某些操作系统不让文件位置始终指向文件末尾。这可能会导致某些用户使用您的原始代码。例如,在 CentOS 6 上,您的代码会按照您的意愿运行,但不会按预期运行。
f = open("myfile.txt","a+")
f.seek(0)
print f.read()
当您使用 打开文件时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
在写入之前会注意将指针移动到最后一行。
模式 r+ 读取和写入 从文件开头开始 r 只读 从文件开头开始 a+ 读取/追加。通过写入文件末尾来保留文件内容
祝你好运!伊莎贝尔·鲁伊斯
依赖于操作系统的较新版本的 Python 中仍然存在一些怪癖,这是由于 stdio 中 fopen() 函数的实现存在差异。
Linux的man fopen
:
a+ - 打开以供读取和附加(在文件末尾写入)。如果文件不存在,则创建该文件。读取的初始文件位置在文件的开头,但输出始终附加到文件的末尾。
操作系统:
``a+'' - 可读写。如果文件不存在,则创建该文件。流位于文件的末尾。对文件的后续写入将始终在文件的当前末尾结束,而与任何干预 fseek(3) 或类似内容无关。
MSDN 并没有真正说明指针最初设置的位置,只是它在写入时移动到末尾。
当使用“a”或“a+”访问类型打开文件时,所有写操作都发生在文件末尾。文件指针可以使用 fseek 或 rewind 重新定位,但总是在执行任何写操作之前移回文件末尾。因此,现有数据不能被覆盖。
使用 Python 2.7.x 和 3k 在各种系统上复制差异非常简单.open
.tell
通过操作系统处理任何事情时,采取预防措施(例如使用显式.seek(0)
.