Записать ввод в файл, исключая последнюю строку - PullRequest
0 голосов
/ 26 апреля 2018

Мое простое назначение - написать функцию, которая запрашивает имя файла, а затем многократно читает строки от пользователя и сохраняет эти строки в именованный файл.

Прекращает сохранение строк, когда пользовательский ввододна точка на линии сама по себе.Строка, содержащая одну точку, НЕ сохраняется.

Пример вывода будет выглядеть следующим образом:

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()

, но при этом сохраняется только первая введенная строка.

Как исключить последнюю введенную строку?

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018

Вы можете попробовать это, просто поменяв некоторые строки в вашем коде следующим образом:

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


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

    infile.close()
0 голосов
/ 26 апреля 2018

Это просто немного вышло из строя, классическая проблема, переместите вход выше цикла while, я надеюсь увидеть почему ...

def savefile():
    filename = input("Save to what file: ")
    infile = open(filename, "w")
    line = ""
    lineCount = 0
    # first lets get the line of input
    line = input("> ")
    # if the line is "." then don't do the following code.
    while line != ".":
        # if the line was not "." then we do this...
        infile.write(line + "\n")
        lineCount += 1
        # get the input again, and loop, remember if we get "."
        # we will break from this loop.
        line = input("> ")


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

    infile.close()
0 голосов
/ 26 апреля 2018

Даже не нуждается в объяснении:

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