проверьте, есть ли строка в файле, и если ее нет, добавьте ее

#python #file

#python #файл

Вопрос:

Итак, я пытаюсь создать программу, которая проверяет, есть ли строка в файле, и если ее нет, просто добавьте ее в конец (в новой строке), если ее нет, она просто ничего не делает.

Я уже пробовал w , но он просто перезаписывает весь файл, а не добавляет его, и если я попробую a , он просто добавляет и не проверяет, даже если строка находится в файле. Итак, моя проблема:

Как проверить, есть ли строка уже в файле, и, если ее нет, добавьте ее.

вот примерный код:

 with open("testfile.txt", "a ") as testfile:
    word = "test"
    inhalt = testfile.read ()
    if word not in inhalt:
        testfile.write ("something"  "n")
    else:
        pass
 

Комментарии:

1. Вы имели в виду поиск "test" , а затем запись "something" ?

Ответ №1:

Я предпочитаю, чтобы такие задачи выполнялись в 2 шага. Смотрите ниже:

 with open("testfile.txt") as testfile:
    word = "test"
    inhalt = testfile.read ()
if word not in inhalt:
    with open("testfile.txt", 'a') as testfile:
        testfile.write(word  "n")
 

Комментарии:

1. Нет необходимости использовать , если вы не читаете.

2. он по-прежнему добавляется только к нему, даже если он уже в нем. Но спасибо за быстрый ответ

3. Это невозможно. Не могли бы вы проверить еще раз? Вы пытаетесь использовать правильное слово?

4. Я также протестировал это, это работает. Вы делаете что-то отличное от обоих наших ответов. @dezanos

5. хорошо, кажется, это проблема в моем коде, я попробовал еще раз, и теперь он ничего не делает. Извините, мой плохой

Ответ №2:

Когда вы открываете файл в a a режиме или, вы находитесь в конце файла. Вам нужно вернуться к началу, чтобы прочитать его.

 with open("testfile.txt", "a ") as testfile:
    word = "test"
    testfile.seek(0)
    inhalt = testfile.read ()
    if word not in inhalt:
        testfile.write ("something"  "n")
 

К вашему сведению, в этом нет необходимости else: pass . else: не является обязательным, поэтому просто оставьте его, если нечего делать.

Комментарии:

1. он по-прежнему только добавляется к нему и не осознает, что он уже там. Но спасибо за быстрый ответ

2. Я только что протестировал это, это сработало. Когда файл содержит test , он не изменяется. Когда файл не содержит test , он добавляет something .