gpt4 book ai didi

python - 删除文件中的最后一个字符

转载 作者:IT老高 更新时间:2023-10-28 21:50:54 26 4
gpt4 key购买 nike

查遍了整个互联网,终于找到了这个。

假设我已经制作了一个文本文件,内容如下:Hello World

好吧,我想从这个文本文件中删除最后一个字符(在本例中为 d)。

所以现在文本文件应该是这样的:Hello Worl

但我不知道该怎么做。

我想要的,或多或少,是我硬盘上的文本文件的单个退格功能。

这需要在 Linux 上运行,因为我正在使用它。

最佳答案

使用 fileobject.seek()从末尾开始寻找 1 个位置,然后使用 file.truncate()删除文件的其余部分:

import os

with open(filename, 'rb+') as filehandle:
filehandle.seek(-1, os.SEEK_END)
filehandle.truncate()

这适用于单字节编码。如果您有一个多字节编码(例如 UTF-16 或 UTF-32),您需要从末尾寻找足够的字节来解释单个代码点。

对于可变字节编码,是否可以使用此技术取决于编解码器。对于 UTF-8,您需要找到 bytevalue & 0xC0 != 0x80 为真的第一个字节(从末尾开始),并从该点开始截断。这可确保您不会在多字节 UTF-8 代码点的中间截断:

with open(filename, 'rb+') as filehandle:
# move to end, then scan forward until a non-continuation byte is found
filehandle.seek(-1, os.SEEK_END)
while filehandle.read(1) & 0xC0 == 0x80:
# we just read 1 byte, which moved the file position forward,
# skip back 2 bytes to move to the byte before the current.
filehandle.seek(-2, os.SEEK_CUR)

# last read byte is our truncation point, move back to it.
filehandle.seek(-1, os.SEEK_CUR)
filehandle.truncate()

请注意,UTF-8 是 ASCII 的超集,因此上述方法也适用于 ASCII 编码的文件。

关于python - 删除文件中的最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18857352/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com