#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
.