Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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
什么';这是';r+';和';a和x2B';什么时候用python打开文件?_Python - Fatal编程技术网

什么';这是';r+';和';a和x2B';什么时候用python打开文件?

什么';这是';r+';和';a和x2B';什么时候用python打开文件?,python,Python,我尝试了r+和a+打开文件并进行读写,但是'r+'和'a+'都将str附加到文件的末尾 那么,r+和a+之间有什么区别呢 加: 我找到了原因: 我已经读取了file对象,但忘记了查找(0)以将位置设置为beginPython以相同的方式打开文件: r+打开进行读写。流位于文件的开头 a+打开以进行读取和追加(在文件末尾写入)如果文件不存在,则创建该文件。读取的初始文件位置在文件的开头,但输出会附加到文件的结尾(但在某些Unix系统中,无论当前搜索位置如何) 一个区别是r+如果文件不存在,则不

我尝试了
r+
a+
打开文件并进行读写,但是'r+'和'a+'都将str附加到文件的末尾

那么,
r+
a+
之间有什么区别呢


加:

我找到了原因:

我已经读取了file对象,但忘记了查找(0)以将位置设置为begin

Python以相同的方式打开文件:

  • r+
    打开进行读写。流位于文件的开头

  • a+
    打开以进行读取和追加(在文件末尾写入)如果文件不存在,则创建该文件。读取的初始文件位置在文件的开头,但输出会附加到文件的结尾(但在某些Unix系统中,无论当前搜索位置如何)


一个区别是
r+
如果文件不存在,则不会创建文件,并且打开失败。但是在
a+
的情况下,如果文件不存在,则将创建该文件。

如果您在
C
中使用了它们,则它们几乎与在C中使用的相同

fopen()函数的-

  • r+
    :-
    打开进行读写。该流位于 这个 文件的开头。

  • a+
    :-
    打开进行读写。如果创建了该文件,则会创建该文件 不 存在。流位于文件的末尾。海底- 昆特对文件的写入总是以当时的当前速度结束 文件结束,不考虑任何干预fseek(3)或类似内容

官方文档暗示“忘记寻找”行为实际上并没有得到保证(它与“某些”unix一起工作):。因此,
a+
的工作方式与C不完全相同。我建议您对答案进行编辑,以反映以下事实:模式的工作方式与C不完全相同,并且输出不一定附加到文件的末尾(尽管是在没有进行寻道时)。@EOL好吧,我必须同意这一点,但是我仍然不确定在某些unix中,暗示pythonic函数的
fopen
是否具有相同的行为。但是,由于
open
函数有其他模式(
U
rU
),我们可以在答案中添加“几乎”。@EOL Python不依赖系统的C库来实现这一点吗?我也会做出同样的行为。@JanneKarila:问得好。:)我猜CPython确实依赖于系统的C库。不过,我不确定其他Python实现(Jython、PyPy等)。