Создайте зашифрованный zip-файл в Python

Я неохотно отвечу на свой вопрос, используя вход из + bnord и + chinsoon12 (кто оба сделал кусочки головоломки).

Короткий ответ: нет решения из коробки. Как примечания + bnord, было бы желательно исправить его на стороне сервера (например, экспортируя в формат CSV с помощью mysqldump). Однако, как указывал мой вопрос, я ищу решение, которое позволяет мне работать с дампом sql, минуя сервер.

Итак, если нам нужно работать с дампом, как? Hardcore, ручной способ - использовать регулярные выражения для преобразования INSERT в CSV, либо (1) вне R, используя sed и awk в текстовом файле .sql (+ bnord), либо (2) внутри R с grep и gsub в строках, загруженных с помощью readLines (+ chinsoon12).

Некоторая хорошая душа написала скрипт python, который может конвертировать sql-дампы в CSV . Для этого требуется еще один кусок (потенциально нетривиальный для установки / поддержки) программного обеспечения, поэтому это не тот ответ, на который я надеялся, но он выглядит как хорошая модель, если кто-то хочет изобрести колесо в R.

На данный момент я придерживаюсь своего modus operandi (в Windows), на котором запущен MySQL Community Server, и используя WorkBench для импорта дампа, а затем поговорите с локальным сервером из R. Очень косвенный метод, который является болью в из-за непостижимой системы прав доступа MySQL (особенно раздражает, так как все это просто в текстовом файле ASCII), но единственный способ пока, похоже. Спасибо всем за ваш вклад!

(Если получится лучший, более полный ответ, я с радостью соглашусь с этим, если это возможно).

32
задан piRSquared 30 December 2016 в 12:56
поделиться

2 ответа

Можно использовать библиотека Chilkat. Это является коммерческим, но имеет бесплатную оценку и кажется довольно хорошим.

Вот пример, который я получил от здесь :

import chilkat

# Demonstrates how to create a WinZip-compatible 128-bit AES strong encrypted zip
zip = chilkat.CkZip()
zip.UnlockComponent("anything for 30-day trial")

zip.NewZip("strongEncrypted.zip")

# Set the Encryption property = 4, which indicates WinZip compatible AES encryption.
zip.put_Encryption(4)
# The key length can be 128, 192, or 256.
zip.put_EncryptKeyLength(128)
zip.SetPassword("secret")

zip.AppendFiles("exampleData/*",True)
zip.WriteZip()
-1
ответ дан 27 November 2019 в 21:15
поделиться

pyminizip работает отлично в создании защищенного паролем zip-файла. Для того, чтобы разархивировать, это перестало работать в некоторых ситуациях. Протестированный на Python 3.7.3

Здесь, я использовал pyminizip для шифрования файла.

import pyminizip
compression_level = 5 # 1-9
pyminizip.compress("src.txt",'src', "dst.zip", "password", compression_level)

Для разархивировали, я использовал модуль zip-файла:

from zipfile import ZipFile

with ZipFile('/home/paulsteven/dst.zip') as zf:
    zf.extractall(pwd=b'password')
0
ответ дан 27 November 2019 в 21:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: