2017-07-15 58 views
-1

我有一個問題,當調用函數時,如何導入工作。我相信這與範圍有關,但我無法弄清楚它是如何工作的。我檢查了該網站或一些教程類似的問題,但它看起來像我只是不明白它是如何工作python導入模塊全局本地命名空間

我有一個python腳本MyScipt.py含

def usage(errorID): 
    # import sys 
    if errorID == 0: 
     print("blah blah blah") 
    print("blah blah blah") 
    print("blah blah blah"+\ 
    sys.exit() 

def main(): 
    import sys 
    # print(len(sys.argv),sys.argv) 
    try: 
     rootDir = sys.argv[1] 
    except IndexError: 
     usage(0) 

# MAIN PROGRAM 
# 
if __name__ =="__main__": 
    main() 

執行與失敗

PS D:\xxx\python> python .\myScript.py blah blah blah blah blah blah blah blah blah Traceback (most recent call last): File ".\myScript.py", line 288, in main rootDir = sys.argv[1] IndexError: list index out of range

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File ".\myScript.py", line 299, in main() File ".\myScript.py", line 290, in main usage(0) File ".\myScript.py", line 15, in usage sys.exit() NameError: name 'sys' is not defined

如果我取消了2號線(#進口SYS),它會工作

我怎樣才能使進口提供給所有的功能我的腳本中?

感謝事先在

+1

爲什麼不在最前面導入'import sys' _before_所有函數定義? –

+0

的確,這是我想要編寫代碼的初始位置,但後來我搞不清楚'我應該在哪裏調用'import os.path''。我會將這個問題標記爲答案,並可能會打開一個新的答案。 謝謝 – user1649114

回答

0

只需要導入SYS文件的頂部,而不是在函數。

import sys 
def usage(errorID): 

    if errorID == 0: 
     print("blah blah blah") 
    print("blah blah blah") 
    print("blah blah blah"+\ 
    sys.exit() 

def main(): 
    import sys 
    # print(len(sys.argv),sys.argv) 
    try: 
     rootDir = sys.argv[1] 
    except IndexError: 
     usage(0) 

# MAIN PROGRAM 
# 
if __name__ =="__main__": 
    main() 

你所得到的第二個錯誤,因爲你不傳遞任何參數的腳本,然後SYS沒有定義,所以你不能sys.exit()

+0

你是對的。這是我想先放的地方,但嘗試使用os.path方法時,事情變得混亂。我想我應該提出另一個問題。 謝謝 – user1649114

1

感謝所有爲您的反饋。 import sys聲明必須放在腳本的開始部分以解決此錯誤