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

Python将用户输入多行写入文本文件的问题及修正

解决方案

先指出你代码里的几个核心问题:

  • 两次输入都赋值给s1,导致第一次输入被直接覆盖
  • 仅将s1添加到列表一次,第二个输入完全没存入列表
  • 写入文件时用了's1\n',这是固定字符串,不是引用变量s1的实际输入值
  • 打开文件用"w"模式会清空原有内容,若要实现追加功能,需改用"a"模式

下面是修正后的代码,实现先收集用户输入到列表,再将列表内容逐行追加到文件:

import os
import sys

def userfile():
    # 初始化存储用户输入的列表
    text = []
    # 获取两次用户输入,分配独立变量避免覆盖
    s1 = input("输入第1句话:")
    s2 = input("输入第2句话:")
    # 将两个输入都添加到列表
    text.append(s1)
    text.append(s2)

    # 用"a"模式打开文件实现追加,同时用with语句自动管理文件关闭
    file_path = os.path.join(sys.path[0], "sample2.txt")
    with open(file_path, "a", encoding="utf-8") as userfile:
        # 给每个输入内容加上换行符,保证逐行写入
        lines = [line + "\n" for line in text]
        userfile.writelines(lines)

    # 读取文件验证结果
    with open(file_path, "r", encoding="utf-8") as newfile:
        print(newfile.read())

def main():
    userfile()

if __name__ == "__main__":
    main()

关键细节说明:

  • 正确引用变量:写入文件时直接使用变量名(比如line),不要加引号,否则会变成固定字符串而非用户输入内容
  • 追加模式选择:"a"模式会将新内容追加到文件末尾;如果是首次写入文件,用"w"模式也可,但追加必须用"a"
  • with语句优势:无需手动调用close(),系统会自动处理文件关闭,避免资源泄漏
  • 换行处理:用户输入默认不带换行符,需手动添加"\n",确保每行内容单独占一行

如果需要支持用户输入任意数量的内容,可以改成循环输入(直到用户输入空行停止):

import os
import sys

def userfile():
    text = []
    print("请输入内容,输入空行结束:")
    while True:
        line = input()
        if not line:  # 输入空行时退出循环
            break
        text.append(line)

    file_path = os.path.join(sys.path[0], "sample2.txt")
    with open(file_path, "a", encoding="utf-8") as userfile:
        userfile.writelines([line + "\n" for line in text])

    with open(file_path, "r", encoding="utf-8") as newfile:
        print("文件内容:")
        print(newfile.read())

def main():
    userfile()

if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:05:33