首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件管理

文件管理
EN

Stack Overflow用户
提问于 2010-05-23 22:00:49
回答 1查看 341关注 0票数 0

我现在正在研究巨蟒和生物巨蟒。我有一个文件上传表单,无论上传的是什么文件,假设(abc.fasta),那么我想在execute (abc.fasta)函数参数和display函数参数(abc.aln)中传递相同的名称。现在我正在手动更改文件名,但我想让它自动。

工作流程是这样的。

-如果submit不为true,则仅显示页眉和表单部分

-如果submit为true,则调用execute()并从表单输入中获取文件名

-然后显示结果文件名与执行文件名相同,但只是扩展名不同

我的原始代码在这里-- http://pastebin.com/FPUgZSSe

如有任何建议、更改和算法,欢迎光临

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-23 22:22:26

您需要从cgi.FieldStorage()中读取上传的文件,并将其保存到服务器上。通常,临时目录(Linux上的/tmp)用于此目的。您应该在处理后或按计划删除这些文件,以清理驱动器。

代码语言:javascript
复制
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()

这修改了执行以获取新保存的文件的路径。

代码语言:javascript
复制
cline = ClustalwCommandline("clustalw", infile=pathToFile)

对于结果文件,您还可以将其流式传输,以便用户获得“另存为...”对话框。这可能比在HTML中显示它更有用一些。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2891998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档