我一直在尝试调试下面的python cgi代码,但似乎没有用。当我在新文件中尝试时,这三行似乎可以正常工作
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为true,则除了分离文件及其扩展名之外没有任何其他操作。但是当textarea为true时,我必须生成唯一的文件名并在其中写入内容并传递文件名及其扩展名。
我得到的错误是......
type 'exceptions.NameError'>: name 'unique_file' is not defined
args = ("name 'unique_file' is not defined",)
message = "name 'unique_file' is not defined"
赞赏任何建议和更正
感谢您的关注
答案 0 :(得分:2)
unique_file()不是Python的内置函数。所以我假设,要么你忘记了第一个代码片段中的一行,它实际上导入了这个函数,要么你配置了你的python解释器来加载一个启动文件(http://docs.python.org/using/cmdline.html#envvar-PYTHONSTARTUP)。在第二种情况下,CGI脚本找不到此功能,因为它运行的Web服务器标识可能缺少PYTHONSTARTUP环境。变量定义。
答案 1 :(得分:0)
在使用之前,您需要导入或定义unique_file
方法。
它们看起来像:
from mymodule import unique_file
或:
def unique_file():
# return a unique file
答案 2 :(得分:0)
通常当编译器或解释器说没有定义某些东西时,这正是问题所在。所以,你必须回答“为什么没有定义?”这个问题。你真的定义了一个名为“unique_file”的方法吗?如果是这样,可能是名称拼写错误,或者在执行此代码之前未定义它。
如果该功能在另一个文件或模块中,您是否已导入该模块以获取对该功能的访问权限?
当你说它以某种方式工作而不是另一种方式时,有什么区别?一种方法是否自动导入另一种方法没有的功能?
由于unique_file不是内置命令,因此您可能忘记实际定义具有该名称的函数,或者忘记从现有模块导入它。