Python 如何读取在“中打开的文件”;a和x2B&引用;模式
根据定义,“a+”模式打开文件进行附加和读取。附加作品,但阅读的方法是什么?我做了一些搜索,但在任何地方都找不到Python 如何读取在“中打开的文件”;a和x2B&引用;模式,python,windows,io,Python,Windows,Io,根据定义,“a+”模式打开文件进行附加和读取。附加作品,但阅读的方法是什么?我做了一些搜索,但在任何地方都找不到 f=open("myfile.txt","a+") print (f.read()) 尝试此操作后,它将打印为空白。使用f.seek()将文件偏移量设置为文件开头 注意:在Python2.7之前,有一个bug会导致某些操作系统的文件位置不总是指向文件的末尾。这可能会导致一些用户使用您的原始代码。例如,在CentOS 6上,您的代码本来可以按您所希望的方式工作,但不是按它应该的方式工
f=open("myfile.txt","a+")
print (f.read())
尝试此操作后,它将打印为空白。使用f.seek()
将文件偏移量设置为文件开头
注意:在Python2.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+读取/附加。通过写入文件末尾来保留文件内容
祝你好运!
伊莎贝尔·鲁伊斯(Isabel Ruiz)依赖于操作系统的较新版本Python仍然存在一些怪癖,这是由于stdio中fopen()函数的实现不同所致 Linux的
man fopen
:
a+-打开以进行读取和追加(在文件末尾写入)。如果文件不存在,则创建该文件。读取的初始文件位置位于文件的开头,但输出始终附加到文件的结尾
OSX:
``a+“”-开放阅读和写作。如果文件不存在,则创建该文件。流位于文件的末尾。对文件的后续写入将始终以文件的当前结尾结束,而不考虑任何中间fseek(3)或类似内容
MSDN并没有真正说明指针最初设置的位置,只是在写入时指针移动到末尾
使用“a”或“a+”访问类型打开文件时,所有写入操作都发生在文件末尾。可以使用fseek或rewind重新定位文件指针,但在执行任何写入操作之前,文件指针始终会移回文件末尾。因此,无法覆盖现有数据
使用.open
.tell
当通过操作系统处理任何事情时,更安全的做法是采取预防措施,比如使用显式的
.seek(0)
,这真的很奇怪。在OSX上,它将指向文件的结尾,在Linux上,它将指向front.Yep。就这样。该缺陷在2.7 Alpha 1中修复。我的Linux运行的是2.6.2。我也得到了空白输出。谢谢,它工作正常。如果我在我的问题中添加“windows”标记可能会更好,因为它似乎与操作系统相关。不,正确的行为是您不会看到任何输出。在一些运行python 2.7之前版本的操作系统上,可能会看到输出,因为文件位置设置不正确。对不起,您是说我在Python3的Win7机器上执行该代码时不应该看到文件的内容?您在运行问题中发布的代码时不应该看到文件的内容。当您运行此答案中的代码时,您应该会看到输出。这就是我所说的,您的代码可以工作。:)再次感谢。