我有一个程序可以将文件内容加密为密文。我希望程序将列表中的密文写入文件。
我需要帮助的部分代码是:
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”的文件只有一个字符。
我认为这与空列表“cipherTextList = []”的位置有关,但是我已经尝试将此列表从for循环中移出到函数中,但是当我打印它时打印的部分密文处于无限循环中,一遍又一遍地打印正常文本。
任何帮助都很可爱。
答案 0 :(得分:10)
您继续使用w
覆盖打开文件,因此您只能看到最后的值,请使用a
追加:
with open("newCipherFile.txt","a") as cFile:
或者更好的想法,以便在循环外打开它一次:
with open("newCipherFile.txt","w") as cFile:
for char in encryptFile:
cipherTextList = []
............
答案 1 :(得分:2)
使用("newCipherFile.txt","a")
代替("newCipherFile.txt","w")
。 a
用于附加,w
用于覆盖。