open () в режиме добавления не работает должным образом - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь создать программу, которая спрашивает пользователя, что он хочет сделать с файлом, читает / добавляет / удаляет файл.

FileName = open(input("Enter file name: "))
ReadFile = FileName.read()
Decision = input("Do you want to read/delete/append to the file?: ")
if Decision == "read":
    print(ReadFile)
    FileName.close()
elif Decision == "append":
    Append = input("Type what you want to add: ")
    with open("FileName","a") as file:
        file.write(Append)

, но когда я проверяю файл, он не ' добавить его

1 Ответ

1 голос
/ 11 апреля 2020

Это происходит потому, что вы на самом деле не открываете один и тот же файл. Вы запрашиваете у пользователя ввод данных, чтобы указать местоположение файла для чтения этого файла, но если он решит «добавить» файл, вы можете добавить его к файлу, который не имеет ничего общего с указанным файлом. Вы предлагаете пользователю добавить файл с именем "FileName". Вы жестко закодировали эту строку как местоположение файла, когда пользователь выбирает «добавить».

Здесь FileName - это , а не строка, представляющая местоположение файла. Это объект, представляющий файл.

FileName = open(input("Enter file name: "))

Пользователь попросил ввести строку в путь к файлу, но вы не сохранили это строковое значение. Вы использовали это значение для open() файла для чтения.

Здесь вы открываете файл с именем "FileName" в том месте, где, вероятно, находится каталог python, поскольку здесь нет видимого пути .

    with open("FileName","a") as file:
        file.write(Append)

Go посмотрите в своем начальном каталоге и посмотрите, создали ли вы новый файл с именем "FileName".

Имейте в виду, если вы открываете файл с помощью mode="a", и этот файл не существует, будет создан новый файл. https://docs.python.org/3/library/functions.html#open

Я также хотел бы использовать этот момент, чтобы сообщить вам о PEP8, Python руководстве по стилю. Это не закон, но следование ему поможет другим Python программистам помочь вам быстрее.

С учетом вышесказанного рассмотрите возможность создания своего фрагмента кода, похожего на следующий код:

filename = input("Enter file name: ")
decision = input("Do you want to read/delete/append to the file?: ")
if decision == "read":
    with open(filename) as file:
        print(file.read())

elif decision == "append":
    append = input("Type what you want to add: ")
    with open(filename, "a") as file:
        file.write(append)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...