2012-07-24 25 views
3

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

例如: 字符串是:

''' 
Username: Bob 
Password: Coolness 

''' 

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

anotherprogram.exe mytxt.txt 

我环顾四周,我想知道,如果这样做是可能的StringIO?它说“读写字符串作为文件”..我不确定,请回应,如果你知道如何做到这一点无论如何。

+7

如果另一个程序应该能够通过名称来访问文件时,用户将能够这样做,以及类。可以从标准输入中读取另一个程序吗? – 2012-07-24 11:35:47

回答

2

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

s=''' 
Username: Bob 
Password: Coolness 

''' 

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

许多实用程序接受输入从文件中可以通过传递-作为文件名,从标准输入读取,但不是全部。这是否有效,将严重取决于anotherprogram.exe究竟是什么。

1

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

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

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

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

+0

有趣的,你知道我的工作pyFilesystem与我的情况?我无法找到很多关于如何使用它的例子。 – user1513192 2012-07-24 12:13:16

+0

我在http://www.willmcgugan.com/2010/6/20/pyfilesystem-03-released/发现了一篇博客文章+屏幕截图。希望有所帮助。 – reindeer 2012-07-24 12:26:48

+0

@ user1513192:内存文件系统可能是您最初想到的解决方案,但它不会增加任何安全性。正如我上面所说的,如果其他进程可以通过名称访问文件,用户也可以这样做,无论文件驻留在哪个文件系统上。你是否控制过'anotherprogram.exe',即它是由你写的?如果是,只需使用不同形式的进程间通信。如果不是,请查看它是否可以从标准输入读取,或者该程序接受哪些其他形式的输入。 – 2012-07-24 12:32:00

0

为什么不依靠操作系统提供的安全性(我猜你是Windows系统)只能让用户访问文件,而不能访问所有用户。很明显,另一个程序将不得不作为读取文件的用户来执行。

0

即使世界一个叫做wxPython的模块,有一个叫做wx.FileSystem