foo.txt
Hello World!
两个functions
:
def read1(file):
with open(file, 'r+') as fp:
print fp.read()
def read2(file):
with open(file, 'w+') as fp:
print fp.read()
函数read1('foo.txt')
输出:Hello World!
函数read2('foo.txt')
输出:
它基本上什么也不输出。但是为什么呢?
不仅如此,foo.txt
的内容也已删除。
我认为w+
意味着您截断了文件,这意味着您将其覆盖。但是我什至没有使用fp.write()
。
答案 0 :(得分:2)
“截断文件”并不意味着覆盖现有内容(而是保留该内容直到被覆盖);相反,它意味着完全删除文件被截断后的所有内容。在这种情况下,那一点就是文件的开头。
如果要打开文件并能够在对任何子集执行就地写入之前读取现有内容,则r+
是合适的模式。
在WordNet 3.0中引用“截断”的定义来“截断”某些内容是为了将其切断或缩短:
截断
3:像剪短一样变短; “删减一个词”; “侵蚀把山的山脊截断了” [syn: 截短,缩短]
因此,该名称与当前的行为非常匹配。