Python—从文件中剥离最后一个字节的最简单方法?

Python—从文件中剥离最后一个字节的最简单方法?,python,file,truncate,Python,File,Truncate,我想制作一个脚本,它将获取一个文件,去掉文件的最后一个字节。文件可以是任何内容,而不仅仅是文本 我一直在使用seek()和tell()方法,但我找不到一种处理文件的方法来实现这一点 我认为它应该是相对简单的,但也许Python不是一个合适的工具 fileStripped = file[:-4] newpath = path + "\\" + fileStripped if not os.path.exists(newpath): os.makedirs(newpath) with open

我想制作一个脚本,它将获取一个文件,去掉文件的最后一个字节。文件可以是任何内容,而不仅仅是文本

我一直在使用seek()和tell()方法,但我找不到一种处理文件的方法来实现这一点

我认为它应该是相对简单的,但也许Python不是一个合适的工具

fileStripped = file[:-4]
newpath = path + "\\" + fileStripped 
if not os.path.exists(newpath): 
 os.makedirs(newpath)
with open(fname, "r") as f:
 f.seek (0, 2)           # Seek @ EOF
 fsize = f.tell()        # Get Size
 f=f.read
 f=f[:fsize-2]

此方法出错,并告诉我无法为
f=f[:fsize-2]
行下标从末尾查找一个字节并截断

f = open(..., 'r+')
f.seek(-1, os.SEEK_END)
f.truncate()
f.close()

从末尾查找一个字节,然后截断

f = open(..., 'r+')
f.seek(-1, os.SEEK_END)
f.truncate()
f.close()
用于复制文件,然后通过查找回一个字节并截断文件来删除最后一个字节:

with open(srcfile, 'r') as fsrc:
    with open(destfile, 'w+') as fdest:
        shutil.copyfileobj(fsrc, fdest)
        fdest.seek(-1, os.SEEK_END)
        fdest.truncate()
用于复制文件,然后通过查找回一个字节并截断文件来删除最后一个字节:

with open(srcfile, 'r') as fsrc:
    with open(destfile, 'w+') as fdest:
        shutil.copyfileobj(fsrc, fdest)
        fdest.seek(-1, os.SEEK_END)
        fdest.truncate()

您想就地执行还是将其写入新文件?@Jay:The
f=f.read
应该是
f=f.read()
。您当前要求它做的是为
read
方法下标。在unix上,您只需执行
truncate-s-1 filename
@MRAB哦!很好,很好的捕获,谢谢:)你想就地执行还是将其写入新文件?@Jay:The
f=f.read
应该是
f=f.read()
。您当前要求它做的是为
read
方法下标。在unix上,您只需执行
truncate-s-1 filename
@MRAB哦!很好,很好的捕获,谢谢:)这将修改现有的文件-他想将截断的数据写入一个新文件。嗯,首先复制很容易。最后的改变是一个字节,所以你不必费劲地去做任何事情。谢谢你,这种方法会奏效,但是我选择了TMs,因为它包括了复制步骤。非常感谢您的时间。这将修改现有文件-他想将截断的数据写入新文件。嗯,首先复制很容易。最后的改变是一个字节,所以你不必费劲地去做任何事情。谢谢你,这种方法会奏效,但是我选择了TMs,因为它包括了复制步骤。谢谢你的时间。啊,你知道怎么做很容易!非常感谢。这太完美了。啊,当你知道怎么做的时候,这太容易了!非常感谢。这太完美了。