我现在正在研究巨蟒和生物巨蟒。我有一个文件上传表单,无论上传的是什么文件,假设(abc.fasta),那么我想在execute (abc.fasta)函数参数和display函数参数(abc.aln)中传递相同的名称。现在我正在手动更改文件名,但我想让它自动。
工作流程是这样的。
-如果submit不为true,则仅显示页眉和表单部分
-如果submit为true,则调用execute()并从表单输入中获取文件名
-然后显示结果文件名与执行文件名相同,但只是扩展名不同
我的原始代码在这里-- http://pastebin.com/FPUgZSSe
如有任何建议、更改和算法,欢迎光临
谢谢
发布于 2010-05-23 22:22:26
您需要从cgi.FieldStorage()中读取上传的文件,并将其保存到服务器上。通常,临时目录(Linux上的/tmp)用于此目的。您应该在处理后或按计划删除这些文件,以清理驱动器。
def main():
import cgi
import cgitb; cgitb.enable()
f1 = cgi.FieldStorage()
if "dfile" in f1:
fileitem = f1["dfile"]
pathtoTmpFile = os.path.join("path/to/temp/directory", fileitem.filename)
fout = file(pathtoTmpFile, 'wb')
while 1:
chunk = fileitem.file.read(100000)
if not chunk: break
fout.write (chunk)
fout.close()
execute(pathtoTmpFile)
os.remove(pathtoTmpFile)
else:
header()
form()这修改了执行以获取新保存的文件的路径。
cline = ClustalwCommandline("clustalw", infile=pathToFile)对于结果文件,您还可以将其流式传输,以便用户获得“另存为...”对话框。这可能比在HTML中显示它更有用一些。
https://stackoverflow.com/questions/2891998
复制相似问题