以r +模式打开文件但无法截断文件?

时间:2018-08-04 19:04:46

标签: python-3.x

鉴于r+,我无法通过以r+ Open for reading and writing. The stream is positioned at the beginning of the file.模式打开文件来截断先前创建的文件

参考-> here

from sys import argv

script, filename = argv

print(f"We're going to erase {filename}")
print("If you don't want that, hit Ctrl+C (^C).")
print("If you do want that, hit return")

input("?")

print("Opening the file...")
target = open(filename, 'r+')

print(target.read())

print("Truncating the file, Goodbye!")
target.truncate()

2 个答案:

答案 0 :(得分:0)

“截断”方法采用可选的size参数。如果未指定该参数,它将使用文件中的默认位置。我假设由于您只是读取文件,所以默认位置在文件的末尾-因此,没有任何内容跟随当前位置,并且没有任何内容被截断。尝试将零(0)传递给truncate方法,看看会发生什么。您也可以尝试使用“ rw +”打开文件。

答案 1 :(得分:0)

The truncate method将调整文件的大小,以使其在当前文件位置结束(如果未传递,则size参数的值)。 read文件时,您将文件中的当前位置从头到尾移动。这意味着截断什么都不做,因为您要使文件的新结尾与旧结尾位置相同。

如果要不带任何参数调用truncate,则需要先seek回到文件的开头,或者调用truncate(0)告诉它创建新文件文件大小为零字节。