将加密的csv导入Python 3

时间:2017-07-27 18:24:08

标签: git python-3.x csv encryption jupyter-notebook

因此,我计划使用Jupyter notbook(Python 3)进行一些数据分析,出于协作原因,我想将数据存储在github存储库中,但数据集是敏感的。

因此我想将数据(当前.csv)存储在repo上作为加密文件,然后在运行时解密(我猜是密码提示)。

这样做的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

最后,我使用python 3.6和SimpleCrypt来加密文件,然后上传它。

认为这是我用来加密文件的代码:

f = open('file.csv','r').read()
ciphertext = encrypt('USERPASSWORD',f.encode('utf8')) #this .encode('utf8') is the bit im unsure about
e = open('file.enc','wb') # file.enc doesn't need to exist, python will create it
e.write(ciphertext)
e.close

这是我在运行时解密的代码,我运行getpass("password: ")作为参数,所以我不必在内存中存储password变量

from io import StringIO
import pandas as pd
from simplecrypt import encrypt, decrypt
from getpass import getpass

# opens the file
f = open('file.enc','rb').read()

print('Please enter the password and press the enter key \n Decryption may take some time')

# Decrypts the data, requires a user-input password
CSVplaintext = decrypt(getpass("password: "), f).decode('utf8')
print('Data have been Decrypted')

#create a temp csv-like file to pass to pandas.read_csv()
DATA=StringIO(CSVplaintext)

# Makes a panda dataframe with the data
df = pd.read_csv(DATA)

注意,在python 2.7中UTF-8编码行为是不同的,因此代码会略有不同。