- Utilisez le mode texte pour lire les flux dont vous savez qu'ils sont en texte.
- Fiez-vous aux "nouvelles lignes universelles" des flux d'entrée de texte.
- Utilisez des méthodes de type chaîne pour manipuler des chaînes de caractères.
passphrase_infile_path = "lorem.txt"
with open(passphrase_infile_path, 'r') as passphrase_infile:
passphrase_line = passphrase_infile.readline()
passphrase = passphrase_line.rstrip('\n')
De cette façon, le mot de passe devrait fonctionner, parce que vous avez juste ces personnages sans le saut de ligne.
import gnupg
gpg = gnupg.GPG()
crypto_infile_path = "ipsum.gpg"
plaintext_outfile_path = "dolor.txt"
with open(crypto_infile_path, 'rb') as crypto_infile:
status = gpg.decrypt_file(
crypto_infile,
passphrase=passphrase,
output=plaintext_outfile_path)
D'abord, notez que temp[0:len(temp)-2]
est plus idiomatiques écrit comme temp[:-2]
.
Cette expression obtient tout sauf les deux derniers éléments de la séquence temp
.
Puisque temp
est une séquence d'octets, vous toujours couper les deux derniers octets de cette séquence.
>>> line = b'rabbit\r\n'
>>> line[:-2]
'rabbit'
>>> line = b'rabbit\n'
>>> line[:-2]
'rabbi'
Ce n'est pas la manière fiable de couper le saut de ligne d'une ligne d'entrée. Au lieu de cela, ouvrez le fichier en mode texte, et vous obtiendrez des sauts de ligne et des entrées de texte normalisés. Ensuite, utilisez les méthodes intégrées str
pour le manipuler par des caractères.
Quelle est l'erreur que vous obtenez? – Rahul
Avez-vous essayé 'temp = temp.rstrip ('\ r \ n')' pour supprimer le retour chariot et le retour à la ligne? – grooveplex
Avez-vous revérifié que 'password' contient la bonne valeur? (Aussi, pourquoi utiliser 'rb' pour lire un fichier texte?) – usr2564301