2010-06-04 52 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。變量定義。

相關問題