2010-06-26 38 views
0

好吧,我已經創建了一個模塊,允許您更容易地將文件複製到目錄。現在,我還有一些「嘗試」和「除了」,以確保它不會以大混亂的方式失​​敗並且不會關閉終端,但是我也希望它在顯示錯誤的字符串時顯示不同的錯誤消息或變量放入,並結束模塊,但不是......如果我可以說,終端運行它,所以我這樣做:停止一個操作,而不停止python中的模塊

def copy(): 
    import shutil 
    import os 
    try: 
     cpy = input("CMD>>> Name of file(with extension): ") 
     open(cpy, "r") 
    except: 
     print("ERROR>>> 02x00 No such file") 
    try: 
     dri = input("CMD>>> Name of Directory: ") 
     os.chdir(dri) 
     os.chdir("..") 
    except: 
     print("ERROR>>> 03x00 No such directory") 
    try: 
     shutil.copy(cpy, dri) 
    except: 
     print("ERROR>>> 04x00 Command Failure") 

問題是,它並沒有結束模塊,如果有沒有文件或目錄,只有在完成。

+0

我重新爲您代碼...我希望現在看起來的方式是您的意思。 – 2010-06-26 01:56:06

回答

2

您可能會認爲,當引發異常時,Python會停止正在執行的操作,但這並不完全正確。 except:塊實際上捕獲了引發的異常,並且應該處理它。在完成except:塊之後,Python將繼續執行文件中的其餘代碼。

在你的情況下,我會在每個print(...)之後加上return。這樣,在Python打印出錯誤信息後,它也將從copy()函數返回,而不是繼續詢問更多輸入。

0

如果沒有想做出錯誤的模塊退出...

這裏是你會怎麼做。

def copy(): 
    import shutil 
    import os 
    import sys 
    try: 
     cpy = input("CMD>>> Name of file(with extension): ") 
     open(cpy, "r") 
    except: 
     sys.exit("ERROR>>> 02x00 No such file") 
    try: 
     dri = input("CMD>>> Name of Directory: ") 
     os.chdir(dri) 
     os.chdir("..") 
    except: 
     sys.exit("ERROR>>> 03x00 No such directory") 
    try: 
     shutil.copy(cpy, dri) 
    except: 
     sys.exit("ERROR>>> 04x00 Command Failure") 

sys.exit(0)(成功)和sys.exit(1)(失敗)通常使用,但是,因爲要輸出的錯誤,上面的例子將輸出錯誤的字符串標準錯誤。

Here's a link for more info on sys.exit()