Python 如何使pickle文件在任何文本编辑器中都不可读

Python 如何使pickle文件在任何文本编辑器中都不可读,python,pickle,Python,Pickle,如果我们强制打开我用这个方法创建的pickle文件,它在文本编辑器中是可读的 import pickle,os print os.path.split(__file__)[0] storloc= os.path.normpath(os.path.join(os.path.split(__file__)[0],"test.pkl")) newD={"String":"this is the world", "int":1,"float":1.5} print newD print storloc

如果我们强制打开我用这个方法创建的pickle文件,它在文本编辑器中是可读的

import pickle,os
print os.path.split(__file__)[0]
storloc= os.path.normpath(os.path.join(os.path.split(__file__)[0],"test.pkl"))

newD={"String":"this is the world", "int":1,"float":1.5}
print newD
print storloc
d = open(storloc, 'wb')
pickle.dump(newD,d)
d.close()

如何使pickle文件(test.pkl)在任何文本编辑器中都不可读?

只需在转储调用中添加第三个参数-它是协议参数,并且只有默认的一个(0)是ASCII编码的-协议1和2仅为二进制,应该在文本编辑器中进行修改


但是,这不是安全的-如果你不想看到密码,请检查pyscripto,并对文件进行适当的加密。

尝试使用简单的格式,如Python pickles,对密码是安全的,这是一个愚蠢的游戏

改为使用该软件包,并将其留给操作系统安全存储密码

import keyring

username = # Obtain a stored username or ask the user
password = keyring.get_password('your_application_name', username)

if password is None or verify_password_failed:
    password = # Obtain a password from the user
    keyring.set_password('your_application_name', username, password)

keyring
软件包使用操作系统提供的keyring(OS X、Windows、KDE、Gnome),但如果需要,它会退回到自己的加密存储。

Eh?你为什么需要它,为什么要破坏协议?你搜索过“加密”吗?我正在制作一个保存ftp用户名和密码的小工具,所以我不想让用户每次都输入,而是想让用户选择将其保存到磁盘上……这样用户就可以携带pickle文件,当他再次使用该工具时,他只需使用pickle文件自动获取要填写的信息,如果有人需要,数据不会被泄露在文本编辑器中打开…这是模糊的安全性,而不是安全性。相反,我建议查看操作系统提供的密钥环服务以保存凭据。有关如何正确操作的信息,请参阅此答案。它是标准库的一部分吗?不,所以我不能用它?无论它是好的,对于当前的任务我不能使用keyring@san:为什么不能使用外部库?一个简单的
pip-install-keyring
easy\u-install-keyring
来安装它,而
install\u需要项目
setup.py
中的依赖关系,如果您需要分发您的项目,那么这就是所需要的全部。因为我不知道我的工具的用户,引导他们先安装然后运行我的工具并不容易…@san:他们将使用
easy\u install yourtool
pip install yourtool
,安装工具将为您处理
密钥环的依赖关系。看。否则,我们将无法使用Python。我相信你们,但我为Autodesk Maya artist制作了一个工具,他们对编程毫无恶意,让他们了解他们不愿意了解的东西会让他们拒绝听上去复杂的东西或他们不确定自己在做什么,我完全愿意购买您为一些未来项目提供的产品,这些项目涉及到非常了解使用PIP或easy_install的用户……因此,我开始解决我的问题,Keith提到如何使用zip和jsbueno的标志值设置为2使txt文件无法读写,但我可以取消它并恢复数据