2016-10-04 11 views
1

В python, используя пакет gnupg, можно ли взять значение в памяти, а затем записать его зашифрованным файлом, а не писать в файл THEN encrypting?Прямо писать в зашифрованный файл в Python

Я надеялся, что-то, как это будет работать:

import gnupg 

gpg = gnupg.GPG(gnupghome='keydirectory') 

l = [['a', '1'], ['b', '2'], ['c', '3']] 

gpg.encrypt_file(l, recipients=['[email protected]'], output='encryptedfile.asc') 

Я надеялся, что там была концепция записи, как это в цикле по линии за линией, но я не могу найти.

with open('regularfile.txt', 'w') as file: 
    for i in l: 
    file.write(i) 

В идеале, я мог бы подключиться к базе данных и вывести файл, написав напрямую.

ответ

0

Просто используйте функцию gpg.encrypt() вместо encrypt_file(), а затем напишите в файл.

0

documentation for the GPG.encrypt method показывает, что это то, что вы хотите.

>>> import gnupg 

>>> gpg = gnupg.GPG(homedir="doctests") 
>>> key_settings = gpg.gen_key_input(
...   key_type='RSA', 
...   key_length=1024, 
...   key_usage='ESCA', 
...   passphrase='foo') 
>>> key = gpg.gen_key(key_settings) 

>>> message = "The crow flies at midnight." 
>>> encrypted = str(gpg.encrypt(message, key.printprint)) 
>>> assert encrypted != message 
>>> assert not encrypted.isspace() 

>>> decrypted = str(gpg.decrypt(encrypted)) 
>>> assert not decrypted.isspace() 
>>> decrypted 
'The crow flies at midnight.' 

 Смежные вопросы

  • Нет связанных вопросов^_^