试图将字符串输入文件,仅显示最后一个字符

时间:2015-04-16 12:22:20

标签: python string file encryption ascii

尝试将字符串写入新文件但是当我打开新文件时,它只显示最后一个字符。 Full Encrypt是一个包含随机ASCII值的字符串。

ciphername=input('Choose the name of the file the encrypted message will be put into: ')    
ciphertext=open(ciphername +'.txt','w')    
ciphertext.write(str(FullEncrypt))    
ciphertext.close()

完全加密是:

EncryptFile=input('Enter the name of the file you wish to encrypt: ')
EightCharacterKey=''
for x in range(1,9):
    RandomNumber=random.randint(33,126)
    RandomCharacter=chr(RandomNumber)
    EightCharacterKey+=RandomCharacter
n=0
OffsetNum=0
for x in range(1,9):

    OffsetNum=ord(EightCharacterKey[n])
    n=n+1
OffsetFactor=((OffsetNum/8)-32)
OffsetFactor=int(OffsetFactor)
print(OffsetFactor)
print('Your Eight Character Key is: '+str(EightCharacterKey))
File=open(EncryptFile)
for line in File:
    print,(line)
    for letter in line:
        ConvertedText=ord(letter)
        if ConvertedText==(' '):
            pass
        FullConvertedText=ConvertedText+OffsetFactor
        if FullConvertedText>126:
            FullConvertedText=FullConvertedText-94
        print(FullConvertedText)
        FullEncrypt=str(chr(FullConvertedText))
        print(FullEncrypt)

如果可读

1 个答案:

答案 0 :(得分:0)

无需验证代码的其余部分(所谓的加密部分)或对其进行优化,我相信只获得最后一个字符的原因是因为每次你重新分配FullEncrypt的值'加密'一封信:

FullEncrypt=str(chr(FullConvertedText))

因此,一旦您查看整个文件,该变量仅包含最后一个加密的'信件。你想要做的是将每个下一个字母追加/连接到变量FullEncrypt。一种可能的解决方案是:

外部for循环之外:

FullEncrypt = ''

FullEncrypt=str(chr(FullConvertedText))替换为

FullEncrypt += str(chr(FullConvertedText))

PS:我可以给出的一个好建议是使用所有低位字母变量' _'单词之间:full_encryptfull_converted_text。这将使您的Python代码更容易阅读。