【问题标题】:remove first 32 characters from first line in file从文件的第一行删除前 32 个字符
【发布时间】:2016-12-17 20:55:04
【问题描述】:

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

f4f494da100a3577420a7ff7c32abb5707:55:40 PM | username: 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)

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

【问题讨论】:

    标签: python string file


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      使用 lines[0] 很好 - 唯一的问题是您覆盖了 lines 变量,从而丢失了其他行:

      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)
      

      【讨论】:

      • 谢谢!这看起来不错,但它仍然只用第一行覆盖整个文件。
      • @celestialroad 该文件是否可能已被您的代码覆盖,而这只是占用剩余的一行并使用它?
      猜你喜欢
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      相关资源
      最近更新 更多