2017-05-07 48 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为第一种方法工作。

我建议你做一些关于如何使用命令行的阅读,起初令人沮丧,但非常值得努力。