你的總體想法很好,但有一些細節是關閉的。
與其打開文件兩次,一次處於讀取模式,然後是追加模式,您可以在讀取/寫入(r+
)模式下打開一次。
open()
返回文件對象,而不是文本。所以你不能只用if some_text in open(f)
。您必須閱讀文件。
由於您的數據是逐行構建的,因此最簡單的解決方案是使用for
循環,該循環將迭代文件的各行。
您不能使用if name in line
,因爲"Ben" in "Benjamin"
將是True
。你必須檢查名稱是否相同。
所以,你可以使用:
name=raw_input(" Name: ")
# With Python 3, use input instead of raw_input
with open('names.txt', 'r+') as f:
# f is a file object, not text.
# The for loop iterates on its lines
for line in f:
# the line ends with a newline (\n),
# we must strip it before comparing
if name == line.strip():
print("The name is already in the file")
# we exit the for loop
break
else:
# if the for loop was exhausted, i.e. we reached the end,
# not exiting with a break, this else clause will execute.
# We are at the end of the file, so we can write the new
# name (followed by a newline) right where we are.
f.write(name + '\n')
看起來你要我們寫一些代碼給你。儘管許多用戶願意爲遇險的編碼人員編寫代碼,但他們通常只在海報已嘗試自行解決問題時才提供幫助。證明這一努力的一個好方法是包含迄今爲止編寫的代碼,示例輸入(如果有的話),期望的輸出以及實際獲得的輸出(控制檯輸出,回溯等)。您提供的細節越多,您可能會收到的答案就越多。檢查[常見問題]和[問] – Skam
可能的重複https://stackoverflow.com/questions/4940032/search-for-string-in-txt-file-python。 –