2010-06-04 61 views
0

我一直在尝试调试下面的python cgi代码,但似乎不工作。当我在新的文件试试这三条线似乎工作任何人都可以找出我的问题[Python]

filename=unique_file('C:/wamp/www/project/input.fasta') 
prefix, suffix = os.path.splitext(filename) 
fd, filename = tempfile.mkstemp(suffix, prefix+"_", dirname) 

但是,当我试图像这样的话,我得到错误unique_file没有定义>>>

form=cgi.FieldStorage() 
i=(form["dfile"].value) 
j=(form["sequence"].value) 
if (i!="" and j==""): 
    filename=(form["dfile"].filename) 
    (name, ext) = os.path.splitext(filename) 
    alignfile=name + '.aln' 
elif(j!="" and i==""): 
    filename=unique_file('C:/wamp/www/project/input.fasta') 
    prefix, suffix = os.path.splitext(filename) 
    fd, filename = tempfile.mkstemp(suffix, prefix+"_", dirname) 
    file = open(filename, 'w') 
    value=str(j) 
    file.write(value) 
    file.close() 
    (name, ext) = os.path.splitext(filename) 
    alignfile=name + '.aln' 

我试图要做的是从窗体中检查两个选项: - Fileupload和textarea。如果fileupload是真的,那么除了分离文件及其扩展名之外,没有什么可做的。但是,当textarea是真的,那么我必须生成唯一的文件名并在其中写入内容并传递文件名及其扩展名。

的错误,我得到的是...

type 'exceptions.NameError'>: name 'unique_file' is not defined 
    args = ("name 'unique_file' is not defined",) 
    message = "name 'unique_file' is not defined" 

任何建议和修正的赞赏

谢谢你的关心

+0

如果您在每行代码前放置四个空格,则格式会更好。 – 2010-06-04 11:22:00

+2

unique_file未定义。这个错误如何难以理解? – 2010-06-04 11:22:54

+0

@user:你真的很难帮助你。这是你的代码在你的文件中的样子吗? – SilentGhost 2010-06-04 11:30:55

回答

0

您需要导入或使用它之前定义unique_file方法。

他们看起来像:

from mymodule import unique_file 

或:

def unique_file(): 
    # return a unique file 
+0

但是,我想知道为什么上面三行代码工作没有定义unique_file函数或导入模块 – MysticCodes 2010-06-04 11:28:07

+1

@user:他们不。如果这是您文件的实际内容,则不起作用。 – SilentGhost 2010-06-04 11:44:36

0

通常,当一个编译器或解释说,一些没有定义,这正是问题所在。所以,你必须回答“为什么没有定义?”这个问题。你真的定义了一个名为“unique_file”的方法吗?如果是这样,可能名称拼写错误,或者在执行此代码之前未定义该名称。

如果函数在另一个文件或模块中,是否导入了该模块以访问该函数?

当你说它在一种方式,但不是另一种,有什么区别?一种方法是否自动导入其他功能的某些功能?

由于unique_file不是内置命令,因此您可能忘记实际定义具有该名称的函数,或者忘记从现有模块中导入它。

2

unique_file()不是Python的内置函数。所以我假设,要么你在第一个代码片段中忘记了一行,它实际上导入了这个函数,或者你配置了你的python解释器来加载一个启动文件(http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP)。在第二种情况下,CGI脚本找不到这个函数,因为它运行的Web服务器标识可能缺少PYTHONSTARTUP env。变量定义。

相关问题