4

我有一串文本,我想从中创建一个 .txt 文件。我不想让用户访问它(出于安全原因),所以我想将 .txt 文件存储在内存中(如果这甚至可能的话)。

例如:字符串是:

'''
Username: Bob
Password: Coolness

'''

我想将此字符串作为 .txt 文件保存到内存中。然后将其发送到另一个程序。

anotherprogram.exe mytxt.txt

我环顾四周,我想知道StringIO是否可以做到这一点?它说“将字符串作为文件读取和写入”..我不确定,如果您知道如何执行此操作,请回复。

4

4 回答 4

2

如果其他程序可以从标准输入读取,那么subprocess可能是要走的路。这是一个愚蠢的例子 where anotherprogram.exeis cat

s='''
Username: Bob
Password: Coolness

'''

from subprocess import Popen,PIPE
p = Popen(['cat','-'], stdin=PIPE, stdout=PIPE)
stdoutdata, _ = p.communicate(s)

许多接受文件输入的实用程序可以通过-作为文件名传递来从标准输入读取,但不是全部。这是否有效将在很大程度上取决于anotherprogram.exe实际情况。

于 2012-07-24T12:09:31.110 回答
1

如果您不想让其他人访问它,请使用加密并隐藏密钥,或者使用操作系统提供的用户控制系统。我更喜欢第一个。

您可以使用 ram 磁盘在内存中创建文件,但是以这种方式创建的文件不提供安全性(或者只是一点点,因为它是易失性的)。有一个名为pyFilesystem的 python 模块可以为你做这件事。

但据我所知,您几乎可以作为用户访问磁盘上的每个文件,因此,很难阻止急切的用户有效地找到它。

需要为 anotherprogram.exe 找到的文件必须在用户范围内,因此,它必须以某种方式可供用户访问。

于 2012-07-24T11:45:32.557 回答
0

您为什么不依靠操作系统提供的安全性(我猜您是 Windows)来使文件只能由用户访问,而不是所有用户都可以访问。显然 anotherprogram.exe 必须以对该文件具有读取权限的用户身份执行。

于 2012-07-24T12:11:39.390 回答
0

有一个名为 wxpython 的模块,它有一个名为 wx.FileSystem 的类

于 2012-08-02T16:00:54.737 回答