我是一个博士后,我刚刚完成了Python的一个很酷的科学应用程序,我想和全世界分享它。这是一个非常有用的工具,对遗传学家。
我真的很想让人们通过CGI表单界面来运行这个程序。由于我不再是一名学生,我不再有一个整洁的小cgi-bin子目录连接得很好的with空间。
几年前,我编写了一个简单的CGI程序,并试图使用它作为模板。
下面是我的疑问:我的程序需要创建临时文件(当从命令行运行时,它会将图像保存到给定的路径)。我读过一些关于Apache等方面的教程,并且运行了很多东西,但是我不知道如何让我的程序编写临时文件(我也不知道这些文件会在哪里保存,等等)。每当我试图在Python程序中(以任何方式)写入文件时,CGI就会“崩溃”,看起来不太好。
我并不非常担心安全性,因为临时文件只会是程序的输出(而不是用户的输入)。
当我问你(我假设你是个CGI忍者,如果你走得这么远,也不觉得无聊的话),你知道我的CGI程序可以在不做临时文件的情况下进行文件论证吗?
我以前的方法是简单地把一个文本列表作为一个论点:
try:
if item.file:
data = item.file.read()
if check:
Tools_file.main(["ExeName", "-d", "-w " + data])
else:
Tools_file.main(["ExeName", "-s", "-d", "-w " + data])
...我想用正确的方式做这件事!提前干杯。
堆积如山,
奥利弗
发布于 2011-07-01 20:25:19
好吧,“正确”的方法可能是使用像Django这样的现有的web框架来重新工作。在这种情况下可能有点过火了。不要低估这里的安全问题。它们可能比你想象的更相关。
尽管如此,您可能希望使用标准库中的Python临时文件模块:
http://docs.python.org/library/tempfile.html
如果您在unix上,它通常会将内容写到/tmp/任何东西上。如果您的程序只有在apache下运行时才崩溃(但在直接执行时运行良好),请检查您的权限。确保apache用户在决定存储临时文件的任何地方都有写入权限。确保临时文件是用适当的权限编写的(不要编写以后无法读取的文件)。
发布于 2011-07-01 21:01:50
正如Paul McMillan所说,请使用tempfile:
temp, temp_filename = tempfile.mkstemp(text = True)
temp_output = os.fdopen(temp, 'w')
temp_output.write(something_or_other)
temp_output.close()我个人的观点是,除非您真的需要预构建的功能,否则框架是一个很大的时间接收器。CGI要简单得多,并且可能对您的应用程序起作用,至少在它真正流行之前是这样。
https://stackoverflow.com/questions/6552777
复制相似问题