Python 从文件的第一行中删除前32个字符

Python 从文件的第一行中删除前32个字符,python,string,file,Python,String,File,我有一个长文本文件,总是以32个字符的MD5哈希开头,如下所示: f4f494da100a3577420a7ff7c32ab5707:55:40 PM |用户名:text 我的目标是去掉该文件第一行的前32个字符,然后覆盖该行。我的代码(如下)成功地抓取了行并删除了字符,但删除了文件中的所有其他内容 with open(x, 'r') as fin: lines = fin.readlines() lines = lines[0] lines = lines[32:] w

我有一个长文本文件,总是以32个字符的MD5哈希开头,如下所示:

f4f494da100a3577420a7ff7c32ab5707:55:40 PM |用户名:text

我的目标是去掉该文件第一行的前32个字符,然后覆盖该行。我的代码(如下)成功地抓取了行并删除了字符,但删除了文件中的所有其他内容

with open(x, 'r') as fin:
    lines = fin.readlines()
    lines = lines[0]
    lines = lines[32:]
with open(x, 'w') as fout:
    for line in lines:
        fout.write(line)

我知道我可以用
行[0]
编辑第一行,但我不确定如何用这种方式删除字符(可能是
re
?)

使用
行[0]
是可以的-唯一的问题是您正在覆盖
变量,从而丢失其他行:

with open(x, 'r') as fin:
    lines = fin.readlines()
    lines[0] = lines[0][32:] # Strip just the first line
with open(x, 'w') as fout:
    for line in lines:
        fout.write(line)

使用
行[0]
是可以的-唯一的问题是您正在覆盖
变量,从而丢失其他行:

with open(x, 'r') as fin:
    lines = fin.readlines()
    lines[0] = lines[0][32:] # Strip just the first line
with open(x, 'w') as fout:
    for line in lines:
        fout.write(line)

您只需手动读取前32个字符,然后调用
readlines
读取其余字符:

with open(x, 'r') as fin:
    header = fin.read(32)
    lines = fin.readlines()
with open(x, 'w') as fout:
    fout.writelines(lines)

您只需手动读取前32个字符,然后调用
readlines
读取其余字符:

with open(x, 'r') as fin:
    header = fin.read(32)
    lines = fin.readlines()
with open(x, 'w') as fout:
    fout.writelines(lines)

谢谢这看起来不错,但它仍然只覆盖了整个文件的第一行。@celestialroad是否可能该文件已被您的代码覆盖,而这只是利用剩下的那一行并使用它?谢谢!这看起来不错,但它仍然仅用第一行就覆盖了整个文件。@celestialroad是否可能该文件已被代码覆盖,而这只是利用剩下的那一行并使用它?