[英]Why can't I write to a file in python
我有一個 python 程序可以生成回文並將它們寫入文件。 但是后來我想修改代碼以僅生成有意義的回文(即在字典中)。 因此,我在互聯網上查找了可以在我的 python 程序中使用的英語詞典的 .txt 版本。 所以問題是,在我添加讀取字典文件的代碼之前,回文程序運行良好並將回文寫入我指定的文件,但是當我添加if
語句時(檢查生成的回文是否在字典中) 到程序,它停止寫入文件。 這是代碼:
import itertools, math
from string import ascii_uppercase
def vowel(string):
return any(v in string for v in 'AEIOU')
MAX_LEN = 8
FILENAME = "Palindrome_Dict.txt"
NUMBERS = ['ONE', 'TWO', 'THREE', 'FOUR', 'FIVE', 'SIX', 'SEVEN', 'EIGHT', 'NINE', 'TEN', 'ELEVEN', 'TWELVE', 'THIRTEEN', 'FOURTEEN', 'FIFTEEN', 'SIXTEEN', 'SEVENTEEN', 'EIGHTEEN', 'NINETEEN', 'TWENTY']
DICT = []
f = open("english3.txt", 'r')
DICT = f.readlines()
DICT = list(map(lambda w: w[:-2], DICT))
f.close()
with open(FILENAME, 'w+') as file:
file.writelines(["ALL THE POSSIBLE PALINDROMES\n", "By: Ayinde-Oladeinde Ayoife (a.k.a Index)\n"])
for n in range(3, MAX_LEN):
list = []
sentence = f" {NUMBERS[n-1]} LETTER PALINDROMES "
file.writelines(['\n'+sentence+'\n', '-'*len(sentence)+'\n'])
l = math.ceil(n/2)
for w in itertools.product(*[ascii_uppercase]*l):
word = ''.join(w)
if word[0] not in list:
file.writelines(['\n'+f"--{word[0]}--\n"])
list.append(word[0])
word = word + word[::-1] if n % 2 == 0 else word + word[:-1][::-1]
'''if word.lower() in DICT:
print(word)
file.writelines([word.capitalize()+'\n'])'''
file.writelines([word.capitalize()+'\n'])
從上面的代碼可以看出,我注釋了檢查單詞是否在字典列表中的 if 語句。 並且此代碼按預期工作,但是一旦您取消注釋該 if 語句並檢查 Palindrome_Dict.txt 文件,您將看到該文件完全為空。 我已經盡我所能,我真的需要你的幫助來修復這個錯誤。 提前致謝 :)
首先,我要感謝所有幫助我解決這個問題的人。 我想說我已經找到了解決問題的臨時方法,並且我在這個網站https://www.pythonanywhere.com/forums/topic/860/上找到了解決方案,其中提到了file.flush()
立即寫道前面的.write()
或.writelines()
語句到指定的文件,這就是我所做的。 就這樣,問題解決了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.