我有一个程序可以把文件的内容加密成密文我想让程序把密文,也就是列表中的密文,写到一个文件中。
我需要帮助的代码部分是:

for char in encryptFile:
    cipherTextList = []
    if char == (" "):
        print(" ",end=" ")
    else:
        cipherText = (ord(char)) + offsetFactor
    if cipherText > 126:
        cipherText = cipherText - 94
        cipherText = (chr(cipherText))
        cipherTextList.append(cipherText)
        for cipherText in cipherTextList:
                print (cipherText,end=" ")
    with open ("newCipherFile.txt","w") as cFile:
        cFile.writelines(cipherTextList)

整个程序运行顺利,但是名为“newcipherfile.txt”的文件只有一个字符。
我认为这与空列表“ciphertext list=[])的位置有关,但是我尝试将此列表从for循环移到函数中,但是当我打印它时,打印密文的部分处于无限循环中,并一遍又一遍地打印普通文本。
任何帮助都很好。

最佳答案

您一直用w覆盖打开的文件,因此您只能看到最后一个值,请使用a附加:

 with open("newCipherFile.txt","a") as cFile:

或者一个更好的办法,在循环之外打开一次:
with open("newCipherFile.txt","w") as cFile:
    for char in encryptFile:
        cipherTextList = []
        ............

10-08 15:03