You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python给data.txt每行前加10个空格并生成新文件

给文件每行前加10个空格的解决办法

需求

要把data.txt里的每一行内容前面加上10个空格,生成data_copy3.txt,最终效果如下:

0.00E+00  0.00E+00
          1.00E-02  1.91E-10
          2.00E-02  5.97E-10
          3.01E-02  2.80E-10
          4.01E-02  2.58E-10

当前问题

现在用的代码只是原样复制文件内容,没实现加空格的功能:

with  open("data.txt", "r") as rf:
     with  open("data_copy3.txt", "w") as wf:
          for line in rf:
               wf.write(line)

之前试过用{:>10}格式化,但没成功在新文件里插入空格。原文件每行开头本来就没有空格,格式和上面示例去掉10个空格的样子一致。

为什么{:>10}没生效?

你之前用这个格式化方式失败,大概率是两个原因:

  • 没处理每行末尾的换行符,格式化把换行也算进内容长度里了;
  • 如果原行内容长度≥10,{:>10}只会让内容右对齐,不会额外补空格。

可行方案

方案1:直接拼接10个空格(最简单可靠)

直接在每行内容前硬加10个空格,注意先去掉原行的换行符,避免出现多余空行:

with open("data.txt", "r") as rf:
    with open("data_copy3.txt", "w") as wf:
        for line in rf:
            # 去掉原行的换行,加10个空格后再补换行
            wf.write("          " + line.rstrip("\n") + "\n")

方案2:正确使用格式化字符串

如果想用格式化的方式,需要先把换行符去掉,再按「原内容长度+10」的宽度做右对齐:

with open("data.txt", "r") as rf:
    with open("data_copy3.txt", "w") as wf:
        for line in rf:
            content = line.rstrip("\n")
            # 格式化时设置总宽度为原内容长度+10,实现前面补10个空格
            formatted_line = "{:>{}s}".format(content, len(content) + 10)
            wf.write(formatted_line + "\n")

或者用更简洁的f-string写法:

with open("data.txt", "r") as rf:
    with open("data_copy3.txt", "w") as wf:
        for line in rf:
            content = line.rstrip("\n")
            wf.write(f"{'          '}{content}\n")

内容的提问来源于stack exchange,提问作者Ali A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:15:32