我有一个关于在python中截断文件的简单问题。假设我有一个名为myfile。txt的文件在短语hello what are you doing在一行中
首先我打开文件:f = open('c:/Users/User/Desktop/myfile.txt','r')
然后,如果我使用f.truncate(5)
并关闭文件,它将改变文件,并在其中,将是hello。这意味着无论光标的位置如何,都给我5个字节的文件(如果我错了,请纠正我)。如果我在truncate方法中不使用任何数字,它将删除文件中的所有内容。但是,如果我读取文件f.read(6)
,这意味着光标现在位于位置6(我可以看到使用f.tell()
),然后我使用f.truncate()
,那么文件没有任何变化,也没有任何变化。为什么呢?我将光标移动到位置6,然后我使用截断…在w3schools上,他们说如果我没有在truncate
中放入任何东西,那么当前位置将被使用。这是什么意思?
刚才遇到了同样的问题。用'r+b'
模式打开你的文件。
由于某些原因,我仍然有点不确定,在二进制模式下打开文件导致truncate
像文档中描述的那样工作。也不要忘记添加+
模式。
这也不是一个特例。对于以二进制模式打开的文件,有相当多的文件对象方法可以按预期工作,而对于以默认文本模式打开的文件,则较少。
无论如何,希望这对你有帮助。