首页 > 解决方案 > 将输入写入文件,不包括最后一行

问题描述

我的简单任务是编写一个请求文件名的函数,然后反复从用户那里读取行并将这些行保存到命名文件中。

当用户输入本身是一行上的一个点时,它会停止保存行。不保存包含单个点的行。

示例输出如下所示:

Save to what file: mytest.txt
> This is
> my attempt at
> the problem.
>
> The last line was empty
> .
Saving file mytest.txt
5 lines saved

这是我的尝试:

def savefile():
    filename = input("Save to what file: ")
    infile = open(filename, "w")
    line = ""
    lineCount = 0
    while line != ".":
        line = input("> ")
        infile.write(line + "\n")
        lineCount += 1


    print("Saving file", filename)
    print(lineCount, "lines saved")

    infile.close()

效果很好,除了我的while循环还保存了最后一行(“。”本身在一行上)。我也尝试了一个if-else循环:

if line != ".":
    line = input("> ")
    infile.write(line + "\n")
    lineCount += 1
else:
    infile.close()

但这只是保存输入的第一行。

如何排除输入的最后一行?

标签: python-3.xfilefor-loopwhile-loop

解决方案


甚至不需要解释:

with open("my_file.txt","w") as file:
    while True:
        line = input("> ")
        if line.strip() == ".":
            break
        else:
            file.write(line + "\n")

推荐阅读