Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何读取在“中打开的文件”;a和x2B&引用;模式_Python_Windows_Io - Fatal编程技术网

Python 如何读取在“中打开的文件”;a和x2B&引用;模式

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上,您的代码本来可以按您所希望的方式工作,但不是按它应该的方式工

根据定义,“a+”模式打开文件进行附加和读取。附加作品,但阅读的方法是什么?我做了一些搜索,但在任何地方都找不到

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机器上执行该代码时不应该看到文件的内容?您在运行问题中发布的代码时不应该看到文件的内容。当您运行此答案中的代码时,您应该会看到输出。这就是我所说的,您的代码可以工作。:)再次感谢。