2017-05-07 49 views
0

我有Python 3和一個簡單的.py文件的文件夾,它說Hello World。我使用os.chdir("path-to-file")導航到該文件,然後,在我的Python命令行中輸入文件的名稱(例如,demo.py)。每次我這樣做,我得到一個錯誤,指出:在Windows 7中讀取.py腳本

Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'demo' is not defined

無論如何,當我在一個簡單,Windows命令行運行python腳本,它捉迷藏好。爲什麼是這樣?

順便說一句,任何額外的閱讀列表/鏈接關於Python將有所幫助。

+1

如果您在Python程序中添加'demo.py'這一行,它會失敗,原因相同:它不是有效的Python代碼。 Python「命令行」是一種交互式編程環境,它不是像Windows命令行那樣的shell環境。 – deceze

+0

那麼,我應該如何在Python命令行中讀取一個簡單的.py文件? – IsaaK08

+1

與在Python程序中做的相同的方式:你不這樣做。如果你將'demo demo'作爲一個模塊,但是在處於交互模式時模塊位於何處會變得棘手。要執行'.py'文件,您可以像Windows一樣在Windows命令行上執行。 – deceze

回答

1

要在命令行運行腳本:

$ python3 /path/to/file 

你真的不希望,除非所有的代碼包含一個函數或類中運行Python解釋器內部的腳本。比方說,你的文件script.py看起來是這樣的:

print("Beep boop") 

,你可以通過導入它

>>> os.chdir("path/to/file") 
>>> import script 
Beep boop 

加載Python解釋這個文件,但是這是要對這個錯誤的方式。 import用於共享文件之間的代碼 - 不執行代碼。如果script.py反而是這樣的:

def main(): 
    print("Beep boop") 

if __name__ == "__main__": 
    main() 

然後,你可以這樣

>>> os.chdir("path/to/file") 
>>> import script 
>>> script.main() 
Beep boop 

或像這樣運行:

$ python3 /path/to/file 
Beep boop 

您還需要一個在同一個名爲__init__.py文件目錄爲script.py爲第一種方法工作。

我建議你做一些關於如何使用命令行的閱讀,起初令人沮喪,但非常值得努力。