首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >删除文件中的最后一个字符

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

Stack Overflow用户
提问于 2013-09-18 02:34:15
回答 7查看 64.6K关注 0票数 47

在浏览了整个互联网之后,我得出了这个结论。

假设我已经创建了一个文本文件,其内容为:Hello World

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

因此,文本文件现在应该如下所示:Hello Worl

但我不知道该怎么做。

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

这需要在Linux上工作,因为这就是我正在使用的。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-09-18 02:36:25

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

代码语言:javascript
复制
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为true的第一个字节(从末尾开始),并从该位置开始截断。这可以确保您不会在多字节UTF-8代码点中间截断:

代码语言:javascript
复制
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编码的文件。

票数 74
EN

Stack Overflow用户

发布于 2018-10-15 09:45:23

如果你不是在二进制模式下读取文件,而你只有'w‘权限,我可以建议你这样做。

代码语言:javascript
复制
f.seek(f.tell() - 1, os.SEEK_SET)
f.write('')

在上面的代码中,f.seek()将只接受您没有'b‘访问权限的f.tell() b/c。然后,您可以将光标设置为最后一个元素的开始位置。然后,您可以通过空字符串删除最后一个元素。

票数 10
EN

Stack Overflow用户

发布于 2013-09-18 02:38:22

代码语言:javascript
复制
with open(urfile, 'rb+') as f:
    f.seek(0,2)                 # end of file
    size=f.tell()               # the size...
    f.truncate(size-1)          # truncate at that size - how ever many characters

请务必在windows上使用二进制模式,因为Unix文件行末尾的许多行都会返回illegal or incorrect字符数。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18857352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档