簡體   English   中英

為什么我不能在 python 中寫入文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM